這使我困惑。它一定是我看不到的小東西。我正在嘗試使用ajax調用加載非常簡單的observableArray
淘汰賽。從.ajax()調用knockout.js observableArray()調用
的JavaScript
// we bind the array to the view model property with an empty array.
var data = [];
var viewModel = {
vendors: ko.observableArray(data)
};
ko.applyBindings(viewModel);
$(function() {
// on this click event, we popular the observable array
$('#load').click(function() {
// WORKS. Html is updated appropriately.
viewModel.vendors([{ "Id": "01" },{ "Id": "02" },{ "Id": "03" }]);
// DOES NOT WORK. Fiddler2 shows the same exact json string come back
// as in the example above, and the success function is being called.
$.ajax({
url: '/vendors/10',
dataType: 'json',
success: function (data) {
viewModel.vendors(data);
}
});
});
});
HTML
<button id="load">Load</button>
<ul data-bind="template: { foreach: vendors }">
<li><span data-bind="text: Id"></span></li>
</ul>
問:爲什麼成功的Ajax調用,誰的data
變量值相匹配的字節爲字節硬盤鍵入的值,不會觸發h tml刷新?
感謝驗證我的理智......我再仔細一點。也許MVC吸一點包裝或什麼... – 2012-03-16 05:51:09
葉。 Firebug請求響應,驗證您正在獲取json,然後驗證jquery是否將其解析爲對象。 – madcapnmckay 2012-03-16 05:55:34
它是肯定的json ... C#代碼看起來像'return Json(list,JsonResponseBehavior.AllowGet);'其中'list'是一個ICollection所以我知道它是JSON。除此之外,Fiddler2可以正確顯示其JSON視圖中的數據......它在JavaScript的某處。當我在工作時,我會在明天再次發佈更多信息 – 2012-03-16 05:58:07