【问题标题】:How to bind Marionette.ItemView to existing page element, instead of passing in a template?如何将 Marionette.ItemView 绑定到现有页面元素,而不是传入模板?
【发布时间】:2013-08-22 09:39:26
【问题描述】:

我们的应用程序在 index.mustache 中使用 Mustache 模板,并使用 Symfony 进行初始 API 调用,而不是使用 Backbone。这样用户就不会在初始页面加载时盯着空白屏幕。

现在我们如何使用 Marionette 绑定到 DOM 中呈现的页面元素(以便我们可以操作数据并添加交互性),而不是传递一个新模板?

就我们的研究表明,我们需要始终将模板传递给 Marionette Layout 和 ItemView,否则会出现“无模板错误”。

我们可以使用 el 属性吗,就像在 Backbone 中一样? 另一种选择是扩展 Marionette.View,但不建议这样做。

【问题讨论】:

    标签: backbone.js marionette backbone-views


    【解决方案1】:

    您应该只实例化视图,而不进行渲染。 http://jsfiddle.net/vpetrychuk/PkNTp/

    var ItemView = Backbone.Marionette.ItemView.extend({
        el : '.content',
        events : {
            'click' : 'clickHandler'
        },
        clickHandler : function () {
            this.$el.append('clickHandler');
        }
    });
    
    new ItemView();
    

    【讨论】:

    • 我不知道我做错了什么。现在它起作用了……很奇怪。谢谢维塔利!
    • 我建议做一个小改动:不要将el 硬编码到视图本身中。这会导致以后头疼。相反,将el 传递给构造函数选项:new ItemView({el: ".content"});
    • @DerickBailey 感谢您的建议,是的,这肯定更可重用。 Marionette Btw 的忠实粉丝! :)
    • 如果不渲染,你还能访问 'ui' 对象吗?
    • @earl3s,因为我做了一些调查,这没有初始化:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    相关资源
    最近更新 更多