我在我的网站的一部分上遇到了一个非常奇怪的错误,该部分是用backbone.js、backbone.marionette 构建的。我将 underscore.js 用于模板,并使用 nicepie 用于 REST 框架。
Firebug 输出“ReferenceError: xyz (where <%= xyz %> in the underscore template) is not defined”。(8 超出范围 5)。
当我将其追溯到 underscore-min.js 文件时,它没有 8 行,因为它是一个 min 文件。这是可以预料的。
但是,我怀疑是语法错误,因为在控制台中手动操作变量可以正常工作。
我可以从 REST 框架中手动定义名称模型提取,并将其呈现在其视图中。我什至可以使用 MyApp.testSection.show("渲染的视图") 将其正确输出到前端,而不会出现任何问题。
我怀疑 NameView 模板中的语法有问题:_.template(...) 部分或 MyApp.addInitializer
下面的代码
Name = TastypieModel.extend({
urlRoot:'/api/v1/names/Calvin'
});
//returns an array {'name':'Calvin', 'age':32, etc....}
NameView = Backbone.Marionette.ItemView.extend({
model: Name,
template: _.template("<h1>My name is <%= name %></h1>"),
tagName: 'p',
initialize: function(){
this.bindTo(this.model, "change", this.render);
}
});
MyApp.addInitializer(function(options){
var name = new Name();
name.fetch();
var nameview = new NameView ({
model: name
});
MyApp.testSection.show(nameview);
});