通過Durandal(1.2版)使用Knockout Knockout Observable作爲AJAX調用的結果更新後不會更新綁定,但第一次除外。敲開可觀察的綁定僅在首次調用ajax後更新
視圖模型:
define(["require", "exports"], function(require, exports) {
var About = (function() {
function About() {
var _this = this;
this.Code = ko.observable("Initial Content");
$.get("MyXml.xml", function (data) {
return _this.DataLoaded(data);
}, "text");
}
About.prototype.DataLoaded = function (data) {
this.Code(data.toString());
};
return About;
})();
return About;
});
查看:
<div>
<h2>About</h2>
<p data-bind="text: Code"></p>
</div>
視圖模型被綁定到通過Durandals作曲家的觀點,但我碰到的香草淘汰賽同樣的問題。 第一次組合視圖時文件的內容被正確顯示,但是當視圖在該組合之後再次被組合時,該綁定在初始值之後未被更新。該文件被加載,並且調用更新observable的代碼,不會拋出任何錯誤。 以前我只是通過使用setInterval延遲更新來解決問題。這與第一次運作的事實相結合,因爲我認爲這是一個競賽條件錯誤。但我無法弄清楚會出現什麼問題。
是否有任何時間段您不應該更新可觀察值?有沒有一種好的模式來避免這種情況?
編輯
現在我使用viewAttached法(迪朗達爾)知道什麼時候它的安全更新,但我仍想知道的根本原因,並可能沒有更好的辦法。