이 간단한 테스트가 런타임 오류를 발생시키는 이유를 이해하는 데 실제 문제가 있습니다.녹아웃 - JavaScript 런타임 오류 : 개체가 'Level'속성 또는 메서드를 지원하지 않습니다.
...
JavaScript runtime error: Object doesn't support property or method 'Level'
I을 나는, 나는, 편지에 대한 설명서를 따랐습니다 녹아웃 계산 재산 '레벨'내 FilterClause 객체의 일환으로있어 아직 여전히 런타임 오류가 발생합니다 계산 된 특성 함수가 선언 된 시공시 인스턴스화되지 않은 오브젝트와 관련이 있다고 생각하십시오. 그러나 그것은 적어도 편지에 대한 녹아웃 문서를 따르는 것으로 보인다.
혼란스러워 !! 계산 내부의 당신은 상황에 문제가
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);
}
달콤한! 나는 지금 그 문제를 안다. 고맙습니다. 문서를 완전히 읽지 못해서 내 잘못입니다. 그래서 숙련 된 knockout/javascript 프로그래머가 두 가지 예제 중 어느 것이 더 낫습니까? 예를 들어 'one'은 훨씬 깔끔하게 보입니다. 그러나 'two'의 예는 더 명확하지만 실수를 저지르기 쉽습니다. 개인적인 선택일까요? – DIGGIDY
또 다른 질문 @Artem Vyshniakov, 그것이 건설 상태에있는 경우 부모로부터 'Level'값을 어떻게 얻을 수 있습니까? – DIGGIDY
나는 두 번째 방법을 선호한다. 죄송합니다. 질문하지 않았습니다. –