Backbone.js 通过模型&xB4;将数组添加到下划线视图
我正试图将一些模型的姿态传递给我的下划线视图,然而,由于某些原因,我无法找到正确的方法使其工作,如果有人能指出正确的方向,我将不胜感激Backbone.js 通过模型&xB4;将数组添加到下划线视图,backbone.js,Backbone.js,我正试图将一些模型的姿态传递给我的下划线视图,然而,由于某些原因,我无法找到正确的方法使其工作,如果有人能指出正确的方向,我将不胜感激 App.appModel = new App.Models.AppModel({ "user" : data.user, "acls" : data.acls //acls is an array, which I need to pass to the view }); App.appLogged = new App.Views.App(
App.appModel = new App.Models.AppModel({
"user" : data.user,
"acls" : data.acls //acls is an array, which I need to pass to the view
});
App.appLogged = new App.Views.App({
model : App.appModel
});
//My view
App.Views.App = Backbone.View.extend({
render : function() {
template = _.template( $('#Home').html(), {acls : this.model.toJSON }) ;
this.$el.html(template);
}
});
//so In my view... I need a li with each acl
<script type="text/template" id="Home">
<% _.each(acls, function(acl) { %>
<li><%= acl.get(0) %></li>
<% }); %>
</script>
App.appModel=新建App.Models.appModel({
“用户”:data.user,
“acls”:data.acls//acls是一个数组,我需要将其传递给视图
});
App.apploged=新建App.Views.App({
型号:App.appModel
});
//我的看法
App.Views.App=Backbone.View.extend({
render:function(){
template=35;.template($('#Home').html(),{acls:this.model.toJSON});
这个.$el.html(模板);
}
});
//所以在我看来。。。我需要每个acl都有一个li
它不会抛出任何错误。。。它只是不呈现它
提前谢谢 调用
toJSON()
中似乎缺少paren
更改模板编译行:
//My view
App.Views.App = Backbone.View.extend({
render : function() {
template = _.template( $('#Home').html(), this.model.toJSON()) ;
this.$el.html(template);
}
});
model.toJSON
将生成一个具有与模型属性对应的键的对象。在这种情况下,它已经包含键acl
。你制作的是
{
ACL:{
ACL:[],
...
}
}
您的模板需要的是:
{
ACL:[xxxx]
}
通常,在渲染时调用
console.log(this.model.toJSON())
来查看模板中的内容是很有用的。pro提示:添加
来下划线模板,在模板中设置断点,并查看需要注意的是这种形式的.\template
,您现在需要在单独的步骤中编译和填充模板。不,它不起作用,我认为这是因为我正在传递一个带有几个属性的模型,而不是仅传递ACL。但如果我制作类似ACL:this.model.permisos.toJSON()的东西,它会抛出未定义的。@andresijares25:this.model在您的视图中是模型还是集合?为什么模型会有permisos
属性?这不是一个属性吗(例如,this.model.get('permisos')
)?
//My view
App.Views.App = Backbone.View.extend({
render : function() {
template = _.template( $('#Home').html(), this.model.toJSON()) ;
this.$el.html(template);
}
});