1

クライアント側のMVCフレームワークとしてagilityjsを使用しています。サーバー側から取得され、クライアント側にモデルとして配置されたマーチャントのリストを表示することになっているdiv要素がある状況があります。

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

ここで、このdivがすべてのマーチャントを表示merchantsする場所にバインドされるようにモデルプロパティをバインドする方法が必要です。merchants-wrapper div各マーチャントは、別のプロトタイプで次のように定義された特定のレイアウトで表示されますmerchant agility object

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

merchants arrayがに双方向でバインドされ、merchants-wrapper div各マーチャントがに応じてレンダリングされるメカニズムが必要です。プロパティが並べ替えまたはフィルタリングによって変更されmerchant prootypeた場合は、それに応じてビューが更新されます。merchants

イベントで一度レンダリングcreateして同じことをイベントで実行できると思いますが、新しいマーチャントオブジェクトを作成したくないので、 divchange:merchantsの内容をクリアしてから、新しいマーチャントを追加する方法があるはずです。merchants-wrapper

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 に答える