1
引起無限遞歸,我被knockout.js映射其對IE無限遞歸。有人能更熟悉KO來發現我做錯了什麼嗎?knockout.js映射在IE9
我有以下knockout.js映射:
var mapping = {
create: function(options) {
return new MyViewModel(options.data);
},
'ChildItems': {
create: function(options) {
return new ChildVM(options.data);
}
}
}
當我渲染網頁約。 5個IE中的1個結束了以下無限遞歸堆棧(導致「SCRIPT28:堆棧空間不足」)。 IE瀏覽器的調用堆棧:
fromJS
MyViewModel
create
Anonymous Function
withProxyDependentObservable
createCallback
updateViewModel
fromJS
MyViewModel
create
Anonymous Function
withProxyDependentObservable
createCallback
updateViewModel
...
我的視圖模型構造:
function MyViewModel(data) {
var self = this;
this.$type = 'MyViewModel';
[some observables]
...
ko.mapping.fromJS(data, mapping, this);
}
視圖模型的初始化是通過調用JSON端點進行:
$.ajax({
url: 'http://my.end/point',
type: 'POST',
data: JSON.stringify(payload),
contentType: 'application/json; charset=utf-8',
success: function(data) {
window.vm = ko.mapping.fromJS(data, mapping);
ko.applyBindings(window.vm)
}
});
謝謝你真的解決了這個問題。你能解釋一下在IE中首先引起遞歸的實際問題是什麼? – Fdr 2012-08-20 14:08:21
歡迎您參閱最新的帖子以獲得澄清。 – 2012-08-20 17:50:55
真正讓我困惑的是,爲什麼這種行爲只發生在IE瀏覽器上,更令人困惑的是,它只發生在30-40%的情況下? – Fdr 2012-08-21 05:32:15