2013-05-14 43 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 
      ... 
     } 

    }