2014-09-23 91 views
0

比方说,我有一些条件上backbonejs模板像这样设置:trigget和事件时模型的变化和变化的模板数据,Backbonejs

<% if(model.get(attribute) === true) { %> 
     display X 
<% } else { %> 
    display Y 
<% { %> 

所有这些数据来自一个JSON文件,用不同的对象,其成我的模板被显示成一个_.each()...所以,在一些前端交互之后,我设置了类似的东西。

myCollection.collection.at(0).set('attribute', false); 

所以问题是...我可以dinamilly改变前端“显示Y”无需重新加载页面或呼叫控制器后???

任何帮助,将不胜感激。

谢谢先进。

UPDATE

我的看法是这样的:

myView = Backbone.View.extend({ 
    el: '.main', 

    render : function() { 
     template = _.template($('#myTemaplte').html(), { models : this.collection.models }); 
     this.$el.html(template); 
    } 
}); 



var theCollection = new Collections.myCollection; 
theCollection.fetch({ 
    success: function (data) { 
      myList = new myView({collection : theCollection}); 
    } 
}); 

和JSON文件看起来像:

data [ 
    { 
    "atribute" : false 
    }, 
    { 
    "atribute" : true 
    }, 
    { 
    "atribute" : false 
    }, 
] 
+0

告诉我您的视图/控制器。 – StateLess 2014-09-23 17:28:07

+0

我没有访问API控制器,它只是返回一个json,其中我设置的属性设置为false,并且我的视图上没有任何其他内容比模板呈现,这就是为什么我没有发布它,它会使有什么不同? – andresmijares25 2014-09-23 17:31:13

+0

我在问你的骨干视图,可能是我可以给它添加逻辑 – StateLess 2014-09-23 17:31:48

回答

0

试试这个

myView = Backbone.View.extend({ 
     el: '.main', 

     initalize : function(){ 
     this.listenTo(this.collection,'change',this.render); 
     }, 
     render : function() { 
      template = _.template($('#myTemaplte').html(), { models : this.collection.models }); 
      this.$el.html(template); 
     } 
    });