2014-06-10 65 views
0

我應該如何界定觀察到的對象,而不是{情況:記錄}在此代碼來自動更新DOM一旦這種觀測的更新:Canjs記錄觀察到的列表自動更新DOM

init : function(element , options){ 
        var el = this.element;debugger; 
        SObjectModelExt.findAll({sobject: new SObjectModel.Case()}).then(function(records){ 
         el.html(can.view('casesView', {cases: records})); 
        }); 
       } 

這是can.Map ({case:[]})還是can.List? 如何在鬍子幫手中使用它? {{#each cases}}?

我已經試過像

this.records = new can.Map({case: []}); 
el.html(can.view('casesView', {cases: records})); 

,後來使用的代碼做

this.records.attr('cases', entries); 

,但它不更新DOM。

回答

1

您應該能夠初始化一個空的List,然後replace它與你應該更新列表的數據。您也可以指定該列表供以後參考:

init : function(element , options){ 
    var el = this.element; 
    var cases = this.cases = new can.List(); 

    SObjectModelExt.findAll({sobject: new SObjectModel.Case()}).then(function(records){ 
     cases.replace(records); 
     el.html(can.view('casesView', { cases: cases })); 
    }); 
} 

那麼你就應該能夠通過this.cases以後引用它,並刪除和添加項目到該列表。

+0

感謝Daff的幫助!我面臨着can.List的替代不會自動反映在DOM上的問題。這裏是我的點擊處理程序:'#elId click':function(){var 0,1} var ctx = this; (函數(記錄); SObjectModelExt.findAll({sobject:new SObjectModel.Case(),criteria:FILTERS ['closed']})。 } – Natallia

+0

你可以從http://jsfiddle.net/donejs/qYdwR/創建一個小提琴嗎? – Daff

+0

這裏http://jsfiddle.net/s2tm2/ – Natallia