将模型的数组传递给下划线视图

时间:2014-10-20 18:25:01

标签: backbone.js

我试图将一些模型属性传递给我的下划线视图,但是,由于某些原因我无法找到使其正常工作的正确方法,如果某些方法可以指向正确的方向,我会很感激。< / p>

 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>

它不会抛出任何错误......它只是不渲染它......

提前致谢。

2 个答案:

答案 0 :(得分:1)

在通话toJSON()

中看起来像丢失的parens
 //My view
 App.Views.App = Backbone.View.extend({
     render : function() {
       template = _.template( $('#Home').html(), {acls : this.model.toJSON() }) ;
       this.$el.html(template);
     }
 });

答案 1 :(得分:1)

更改模板编译行:

//My view
 App.Views.App = Backbone.View.extend({
     render : function() {
       template = _.template( $('#Home').html(), this.model.toJSON()) ;
       this.$el.html(template);
     }
 });

model.toJSON将生成一个对象,该对象具有与模型属性对应的键。在这种情况下,它已经包含密钥acls。你正在制作的是

{   acls:{      acls:[],      ...   } }

您的模板需要的是:

{   acls:[xxxx] }

通常,在渲染中调用console.log(this.model.toJSON())非常有用,可以查看进入模板的内容。