我有真正的問題,理解爲什麼這個簡單的測試會引發運行時錯誤。Knockout - JavaScript運行時錯誤:對象不支持屬性或方法'Level'
我有一個淘汰賽計算財產「級別」作爲我的FilterClause對象的一部分,我已經按照文檔來的信,但它仍然拋出運行時錯誤...
JavaScript runtime error: Object doesn't support property or method 'Level'
我認爲它與在聲明計算屬性函數的構造時未被實例化的對象有關。但是,它似乎遵循了,或者至少似乎遵循了信件的敲除文件。
困惑!
這裏是我的代碼:
var FilterClause = function (json, parent) {
this.FilterClauseID = ko.observable();
this.Type = ko.observable();
this.Left = ko.observable();
this.Right = ko.observable();
this.ParentID = ko.observable();
this.Parent = ko.observable(parent);
this.Children = ko.observableArray();
this.Level = ko.observable(0);
// computed
this.Padding = ko.computed(function() {
return this.Level().ToString() + "px";
});
var mapping = {
'Children': {
create: function (args) {
return new FilterClause(args.data, this);
}
},
'ignore': ["Parent"]
};
ko.mapping.fromJS(json, mapping, this);
}
甜!我現在看到了這個問題。非常感謝你。我的錯是沒有完全閱讀文檔。因此,從一個經驗豐富的淘汰賽/ JavaScript程序員,這兩個實例中的哪一個更可取?例如'one'看起來更整潔,但'two'例子更清晰,但可能更容易出現錯誤。我想個人選擇? – DIGGIDY
另一個問題@Artem Vyshniakov,如果您還處於施工狀態,您將如何從父級獲得「級別」值? – DIGGIDY
我更喜歡第二種方式。對不起沒有你的問題。 –