2012-07-19 89 views
0

我使用以下基因敲除observableArray和計算列代碼,但是當我將值推送到observable數組時,UI(對於數據綁定計算的)未更新。請看我的jsFiddle例子。具有可觀察陣列的Knockout計算列未更新用戶界面

http://jsfiddle.net/U9Sqb/2/

有沒有更好的方式來推動價值的observableArray,並讓他們通過計算更新UI?提前致謝。

HTML:

<html> 
    <head> 
     <script src="http://cloud.github.com/downloads/SteveSanderson/knockout/knockout-2.1.0.js" ></script> 
    </head> 
    <body> 
     <div data-bind="text: onString"></div> 
     <div id="test"></div> 
    </body> 
</html> 

JavaSript:

function MyData() { 
    var self = this; 
    self.currentOnOf = ko.observable(1); 
    self.available = ko.observableArray(); 
    self.onString = ko.computed(function() { 
    return "On " + self.currentOnOf() + " of " + self.available().length;}, self); 
} 

var data = new MyData(); 

$(document).ready(function() { 
    ko.applyBindings(data); 
    data.available().push(1); 
    data.available().push(2); 
    $("#test").html(data.available().length); 
}); 

回答

5

當你推到ko.observable陣列需要直接推到它:

data.available.push(1); 
data.available.push(2); 
+0

你的人的感謝! – likestoski 2012-07-19 15:12:56

+1

我自己從教訓中學會了艱辛。請務必閱讀http://knockoutjs.com/documentation/observableArrays.html標題爲「操作可觀察數組」的部分 – 2012-07-19 18:54:04