【问题标题】:Backbone Marionette rendering a model in a template exampleBackbone Marionette 在模板示例中渲染模型
【发布时间】:2013-11-14 16:07:12
【问题描述】:

我正在将我的主干示例转换为现在扩展 Marionette。我发现很难理解用模板实现同样的事情。让我解释一下。

这是我用来渲染模板的方式

在视图渲染函数中:

campaign.fetch({
 var template = _.template(campaignTemplate, {campaign: campaign});
 that.$el.html(template);  

对于backbone.marionette,我不知道如何做同样的事情,这是我没有任何喜悦的尝试:

  var campaginView = Backbone.Marionette.ItemView.extend({



        initialize: function (options) {
            // campaign id passed from the URL Route
            this.campaign_id = options.id;
        },

        model: new CampaginModel({
            id: this.campaign_id
        }),

        template: campaignTemplate({
           campaign: this.model.fetch() 
        }),



    }); // end campagin view

*我做错了什么?下划线甚至不存在! *

【问题讨论】:

    标签: javascript jquery backbone.js marionette


    【解决方案1】:

    Marionette 不需要您将模型传递给模板,这是您需要在所有 Backbone 视图中执行的重复性任务,而 Marionette 背后的一个想法是减少样板代码。

     var campaginView = Backbone.Marionette.ItemView.extend({
    
        initialize: function (options) {
            // campaign id passed from the URL Route
            this.campaign_id = options.id;
            this.model = new CampaingModel({id:this.campaign_id});
            this.model.fetch();
        },
        template: campaignTemplate,
    
    });
    

    Marionette 文档是清晰简洁示例的重要资源,请查看此链接 https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.itemview.md

    我也为此创建了一个小 jsfiddle

    http://jsfiddle.net/rayweb_on/msWvV/

    【讨论】:

    • 我觉得这很酷,但我不需要传递一些东西来渲染它,否则在实际模板中这将不起作用:%= 活动? campaign.get('name') : '' %> 对吗?
    • 不,你不需要,木偶会为你做,如果你使用下划线或把手,它会将模型加载到你的模板中
    • 我测试了上面的内容,对我来说,我可能遗漏了一些东西,因为它只是打印出 作为页面上的 html
    • 对不起,我认为因为它必须在脚本标签中,对吧?
    • 你能发布你的模板吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2013-03-19
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多