У меня бесконечная рекурсия в IE по моему отображению knockout.js. Может ли кто-нибудь, более знакомый с KO, определить, что я делаю не так?
У меня есть следующее отображение knockout.js:
var mapping = {
create: function(options) {
return new MyViewModel(options.data);
},
'ChildItems': {
create: function(options) {
return new ChildVM(options.data);
}
}
}
Когда я визуализирую страницу, прибл. 1 раз из 5 IE заканчивает со следующим бесконечным стеком рекурсии (вызывая "SCRIPT28: Out of stack space"). Стек вызовов 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)
}
});