1

我使用 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-wrapperdiv 的内容,然后附加新的商人。

4

1 回答 1

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);
           }  
       }
);

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

于 2013-02-21T11:00:03.533 回答