2013-04-08 56 views
0

我正在使用knockoutJs和一個簡單的2d數組來綁定表。 表格呈現OK,點擊功能被觸發,甚至rightindex正在更新。但用戶界面不會得到refresehd。表沒有用knockoutjs刷新

這是我的代碼:

的HTML:

<table> 
    <tbody data-bind="foreach: representation "> 
     <tr data-bind="foreach: $data, click: $parent.clickMe"> 
      <td data-bind="text: $data "> 
      </td> 
     </tr> 
    </tbody> 
</table> 

的JS:

$(function() { 


    var ViewModel = function() { 
     var self = this; 
     self.clickMe = function (data, event) { 
      var target; 
      if (event.target) target = event.target; 
      else if (event.srcElement) target = event.srcElement; 

      if (target.nodeType == 3) // defeat Safari bug 
       target = target.parentNode; 

      self.representation()[target.parentElement.rowIndex][target.cellIndex] = 1; 
     }; 

     self.representation = ko.observableArray([ 
        [0, 0, 0], 
        [0, 0, 0], 
        [0, 0, 0] 
       ]); 
    }; 
    ko.applyBindings(new ViewModel()); 
}); 

缺少什麼我在這裏?

回答

1

如果你想在每個表示中的各個值來更新UI,那麼你就需要讓他們可觀測量過,我猜想:

self.representation = ko.observableArray([ 
    [ko.observable(0), ko.observable(0), ko.observable(0)], 
    [ko.observable(0), ko.observable(0), ko.observable(0)], 
    [ko.observable(0), ko.observable(0), ko.observable(0)] 
]); 

,然後利用更新它們:

self.representation()[target.parentElement.rowIndex][target.cellIndex](1); 
+0

太棒了!謝謝 :) – Mithir 2013-04-12 08:38:09