如何将动态数组模型属性绑定到agilityjs对象的视图

时间:2013-02-21 09:56:37

标签: agility.js

我使用agilityjs作为客户端mvc框架。我有一种情况,我有一个div元素,应该显示从服务器端检索并作为模型在客户端放置的商家列表。

var merchants = //retrieve merchants from server as json array;
var merchantsWrapper = $$({'merchants':merchants},'<div id="merchants-wrapper"></div>');

现在我需要一种方法来绑定merchants模型属性以绑定到merchants-wrapper div,其中此div应显示所有商家。每个商家都以另一个原型merchant agility object中定义的特定布局显示为:

var merchantProto = $$({//model props}, '<div>rendering layout</div>');

我想要一种机制,merchants array应该双向绑定到merchants-wrapper div,每个商家都应该根据merchant prootype进行呈现,如果是merchants通过排序或过滤视图来更改属性应该相应地更新。

我有一个想法,我可以在create事件上渲染一次,并在change:merchants事件上执行相同操作,但我不想创建新的商家对象,所以要么应该有办法清除merchants-wrapper div的内容,然后附加新商家。

1 个答案:

答案 0 :(得分:1)

我试过这个,它对我有用.....

var merchants = //retrieve merchants from server as json array;
var merchantsWrapper = $$({'merchants':merchants},'<div id="merchants-wrapper"></div>',
    {
      'create':function(){
           var merchnts = [];
           for (each merchant in merchants){  //its pseudocode plz dnt mind the syntax
              var merchnt = $$(merchantProto,{//model props});
              merchnts.push(merchnt); 
           }
           this.model.set({'merchants':merchnts});
       },

       'change:merchants':function(){
           this.view.$("#merchants-wrapper").html("");
           for(each merchant in this.model.get('merchants')){
               this.append(merchant);
           }  
       }
);

我希望它可以帮助别人:)