以下のコードを実行すると、javascript ランタイム エラーが発生します。 Uncaught TypeError: Cannot read property 'name' of null
でdep3
アクセスする場合self.dep2().name
。
dep2
の宣言を の宣言の上に移動すると、エラーはなくなりdep1
ます。これは Knockout のバグですか、それとも何か間違っていますか? 以前の変更dep3
の結果として再計算されているように思えますが、ノックアウトがこのシナリオを処理できると予想していました。dep1
dep2
function ViewModel () {
var self = this;
self.root = ko.observable(null);
self.dep1 = ko.computed(function () {
return self.root() ? self.root().prop1 : null;
});
self.dep2 = ko.computed(function () {
return self.root() ? self.root().prop2 : null;
});
self.dep3 = ko.computed(function () {
if (self.dep1()) {
return self.dep2().name;
}
});
}
globalViewModel = new ViewModel();
globalViewModel.root({
prop1: {name: "ThisIsPropOne"},
prop2: {name: "thisIsPropTwo"}
});