2

我有一个动态添加行的表。每行中的一个单元格包括一个 kendoSparkLine 图表。每次添加新行时,之前行中的图表都会消失,必须重新绘制。每行都有一个Knockout单击绑定,它将右侧的上下文configuration panel(见附图)设置为当前ViewModel表示该行。因此,插入一行后,我可以单击缺少图表的每一行,然后单击calculate,图表就会出现。

任何人都可以向我解释这种行为吗?

如何确保在添加新行时,现有行中的图表仍然存在?循环遍历并ViewModels调用每个图表是唯一优雅的解决方案吗?$.each()refresh()

包含 kendoSparkLine 图表的表格行

4

1 回答 1

0

我最终将$.each()我在问题中提到的循环添加到负责在Main ViewModel. 我遍历observableArry()myrow viewmodels并调用它们的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
          ...
        }

    }
于 2013-05-15T07:36:03.767 回答