ItemView不会渲染

时间:2014-10-02 15:11:20

标签: javascript backbone.js requirejs marionette

我正在使用Backbone,Marionette和RequireJS来制作应用程序,但我遇到了Marionette的ItemView。我正在尝试渲染模板,但总是抛出错误。

define(function(require, exports, module) {
var Marionette = require('marionette'),
    Backbone = require('backbone');

var loadModule = Marionette.Module.extend({
    initialize: function() {
        console.log('Load module');
    }
});

var template = '<div><%= message %></div>'
var ItemView = Backbone.Marionette.ItemView.extend({    
    region: '#main',
    template: template,
    model: {message: 'test'}
});

var view = new ItemView();
view.render();

return loadModule;
});

我的html文件包含一个id为main的div。当我运行上面的代码时,我收到错误: &#39;未捕获的TypeError:无法读取属性&#39; apply&#39;未定义的&#39;当调用view.render()时。

任何建议都会有所帮助!

1 个答案:

答案 0 :(得分:2)

您未在实例化时将模型传递给您的视图。当Marionette尝试渲染时,它希望将数据从模型传递到模板函数(在本例中为下划线_.template())。由于您的模板引用了一些数据:

var template = '<div><%= message %></div>'

在这种情况下&#34;消息&#34;,它无法插值。一般来说,你在实例化时会做的事情看起来像这样:

var myModel = new MyModel();

var view = new ItemView({ model: myModel });