2
我正在嘗試淘汰賽和映射插件,並想知道爲什麼這不起作用。我有我想要使用映射擴展淘汰賽映射導致stackoverflow
function todoListViewModel(data) {
ko.mapping.fromJSON(data, { todos: TodoItem.options }, self);
ko.mapping.fromJSON(data, { todos: TodoItem.options }, self);
}
的映射有如下所示的選項來加載一個視圖模型:
var TodoItem = function (options) {
var todoItem = ko.mapping.fromJS(options.data);
todoItem.remove = function() {
alert('remove');
};
return todoItem;
};
TodoItem.options = {
create: TodoItem
};
而且JSON數據是這樣的:
{
"id": "0",
"todo": "",
"todos": [
{
"todo": "Kevin",
"isDone": true
}
]
}
對映射的第一次調用成功,但第二次調用失敗並出現一個計算器: (Chrome中出現「Uncaught RangeError:Maximum call stack size exceeded」)
如果我更改代碼,以便不將選項傳遞給映射,則不引發異常。
我也試着簡化待辦事項構造這個
var TodoItem = function (options) {
var todoItem = {};
return todoItem;
};
,但我仍然得到同樣的錯誤。
看起來我不能這樣做,但我想知道爲什麼?
不知道誰投下來,但它確實工作,我已經完全刪除了TodoItem.options並更換KO .mapping.fromJSON(data,{todos:TodoItem.options},self);與ko.mapping.fromJSON(數據,{todos:{create:TodoItem}},self);和代碼的作品。謝謝 –