KnockoutJS - 计算可处理和 js 对象

KnockoutJS - computed abservable and js object

本文关键字:js 对象 可处理 计算 KnockoutJS      更新时间:2023-09-26

我正在尝试返回可观察对象的属性,但似乎缺少一些东西。

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

我正在尝试返回选定帐户类型的帐户类型 ID 属性,但这不起作用

当我尝试时

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

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

这是对代码的摆弄http://jsfiddle.net/qafrD/

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

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

但是,由于self.selectedAccountType()可能为空,因此您需要先检查一下,然后再访问其上的AccountTypeID

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

演示小提琴

这是因为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/