整合iCanHaz和木偶(Integrating iCanHaz and Marionette)

2019-07-23 13:06发布

我ICanHaz的忠实粉丝,我试图直接intregrate到一个新的木偶应用我建立。 然而,要关闭这个职位 ,我写了这个到达到渲染方法,并改变它的提线木偶:

// Set up Initalizer
    APP.addInitializer(function() {

        //Reach into Marionette and switch out templating system to ICH
        Backbone.Marionette.Renderer.render = function(template, data){
            return ich[template](data);
        }

        //Create Router
        new APP.Routers.GlobalRouter();

        //Start Backbone History
        Backbone.history.start();

    });

如果我走通过这个功能,所有的数据似乎正常工作。 但是,投入使用,并试图用它的布局和项目视图时,没有被追加或插入。 这是从我的GlobalRouter:

 //Grab the main Layout
        var layout = new APP.Views.LayoutView();

        //Render that layout
        layout.render();


        //Make the model
        var userModel = new APP.Models.UserModel({
          "user_name" : "nweingartner@awesome.com",
          "tenant" : "Ginger Ale is Great"
        });

        //Make the Header Region
        var headerRegion = new APP.Views.HeaderView({model: userModel});
        layout.header.show(headerRegion);

这一切都发生在当指数被击中时调用方法。 有没有JS错误,所以我什么都没有去。 然而,它在渲染功能,我追加数据的身体,这将增加(但毁了我的布局和区域结构)。

我保存我的模板的index.html。

有人能帮忙吗?

Answer 1:

好吧,我找不到一个简单的方法来做到这一点使用ICH。 然而,由于其他SO,我发现,非常类似的功能,可以只用胡子发现。

使用此代码:

 Backbone.Marionette.TemplateCache.prototype.compileTemplate = function(rawTemplate) {
    return Mustache.compile(rawTemplate);
 }

使您可以更改渲染器,因此您可以从index.html的使用木偶的模板调用胡子拉模板。 胡须模板看起来是这样的:

 <script id="headerTemplate" type="text/template">
        <p>{{user_name}}</p>
        <p>{{tenant}}</p>
    </script>

不同的是,该类型是“文本/模板”,而不是“text / html的”。 否则,它的作用非常相似。

希望这可以帮助别人。



文章来源: Integrating iCanHaz and Marionette