1

我试图返回一个可观察的属性,但似乎遗漏了一些东西。

self.SelectedAccountTypeID = ko.computed(function () {
    return self.selectedAccountType.AccountTypeID();
}); 

我正在尝试返回 selectedAccountType 的 AccountTypeID 属性,但这不起作用

当我尝试

self.SelectedAccountTypeID = ko.computed(function () {
    return self.selectedAccountType();
}); 

它可以工作,但返回一个 javascript 对象

这是代码 http://jsfiddle.net/qafrD/的小提琴

4

2 回答 2

3

你走在正确的轨道上,因为你selectedAccountType是一个可观察的,你需要使用它来访问它的值selectedAccountType()

所以正确的语法:self.selectedAccountType().AccountTypeID;

但是,因为self.selectedAccountType()可以为 null,您需要先检查它,然后再访问AccountTypeID它:

self.SelectedAccountTypeID = ko.computed(function () {
    if (self.selectedAccountType())
        return self.selectedAccountType().AccountTypeID;
});    

演示小提琴

于 2013-02-02T18:16:19.267 回答
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;
});

演示:http: //jsfiddle.net/qafrD/1/

于 2013-02-02T18:16:26.697 回答