我正在尝试返回一个可观察的属性,但似乎遗漏了一些东西。
self.SelectedAccountTypeID = ko.computed(function () {
return self.selectedAccountType.AccountTypeID();
});
我正在尝试返回selectedAccountType的AccountTypeID属性,但这不起作用
当我尝试
时self.SelectedAccountTypeID = ko.computed(function () {
return self.selectedAccountType();
});
它可以工作但返回一个javascript对象
这是代码的小提琴 http://jsfiddle.net/qafrD/
答案 0 :(得分:3)
您走在正确的轨道上,因为selectedAccountType
是一个可观察的,您需要使用selectedAccountType()
所以语法正确:self.selectedAccountType().AccountTypeID;
但是因为self.selectedAccountType()
可以为null,所以在访问AccountTypeID
之前需要先检查它:
self.SelectedAccountTypeID = ko.computed(function () {
if (self.selectedAccountType())
return self.selectedAccountType().AccountTypeID;
});
演示Fiddle
答案 1 :(得分:2)
这是因为self.selectedAccountType
是一个可观察的意思,你需要像函数一样调用它来检索它的当前值。但是“AccountTypeID”属性不是可观察的,因此这里不需要括号。
self.SelectedAccountTypeID = ko.computed(function () {
// Retrieve the value of the observable
var selectedAccountType = self.selectedAccountType();
// The value may be "undefined" or "null" if there has not yet been
// anything stored in the observable
if (selectedAccountType && typeof selectedAccountType.AccountTypeID != "undefined") {
return selectedAccountType.AccountTypeID;
}
// Return a default value otherwise
return null;
});