通过对象id从knockout observable数组中获取JSON对象

时间:2014-01-18 23:01:25

标签: javascript arrays json knockout.js

除了显示简单字符串数组的ko.observablearrays的基本示例之外,我找不到任何东西。我有一个可观察的数组,它包含一个带有很多属性的大型JSON对象。我需要根据数组中的id属性获取数组中的一个对象。我有这个代码来获取Id:

self.selectedOrgId.subscribe(function (currentOrgId) {
    alert(currentOrgId);
}, self);

我的observable数组是通过ajax get请求填充的,看起来像这样:

[
{"userGuid":"37ab100e-f97b-462a-b3f4-79b8fbe24831",
"orgId":1,
"orgName":
"company ltd",
"isHiring":true,
...snip...}
   more...
]

如何查看我的数组并使用我拥有的orgId获取对象?

1 个答案:

答案 0 :(得分:4)

如果您需要根据其ID找到特定对象,可以使用ko.utils.arrayFirst,如下所示:

var selectemItemID = '1';
var selectemItem = ko.utils.arrayFirst(this.items(), function(i) {
    return i.orgId == selectemItemID;
});

但您也可以创建一个计算属性,根据所选的项目ID返回所选项目。

self.selectedItem = ko.computed({
    read : function(){
        return ko.utils.arrayFirst(this.items(), function(i) {
            return this.selectedOrgId() == i.orgId;
        });
   },
   owner : self
});