2013-05-14 66 views
2

我有一個表,其中的行是動態添加的。每行中的一個單元格包含kendoSparkLine圖表。每次添加新行時,前面幾行中的圖表都消失並且必須重繪。每一行具有Knockout點擊綁定設置configuration panel在右(參見附圖)表示該行的上下文中的電流ViewModel。所以在插入一行後,我可以點擊每一行缺少圖表並點擊calculate,圖表就會出現。表格行內的KendoSparklines,其中的行是動態添加的

任何人都可以解釋我的這種行爲?

我怎樣才能確保添加新行時,在現有行的圖表將仍然存在?在$.each()循環中遍歷ViewModels並在每個圖表上調用refresh(),這是唯一優雅的解決方案?

Table rows that include kendoSparkLine charts

+0

你可以顯示你的一些代碼嗎? – CodeThug 2013-05-15 03:14:27

回答

0

我最終加入$.each()循環我在問題中提到,到發生在Main ViewModel添加新行的保健功能。我通過我的row viewmodelsobservableArry()循環並調用它們的calculate函數(除了剛添加的函數)。這工作正常,我知道我可以做到這一點。每次向表中添加新行時,我都想避免循環訪問數組。 這裏是一些代碼:

var rowVM = function() { 
     var self = this; 

     // Data 
     ... 
     // state 
     ... 

    // Operations 
    ... 
    self.calculate = function() { 
     // logic 
    } 

    } 

    var MainVM = function() { 
     var.self = this; 
     ... 
     // Data 
     self.rowVMs = ko.observableArray([]); 

     // Operations 
     ... 
     self.addRow() { 
      var row = new rowVM(); 
      self.rowVMs.push(row); 
      self.setCurrentRow(row); 

      $.each(self.rowVMs, function(index, vm) { 
      if(vm.bulletchart) // The one just added is ignored 
       vm.calculate(); 
      }); 
     } 

     self.setCurrentRow(current) { 
      // update currentRow observable obj 
      // draw config. panel 
      ... 
     } 

    }