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 に答える