如何将选定值传递给可观察数组中的匿名函数?

时间:2015-12-02 21:19:13

标签: knockout.js knockout-2.0

我试图将所选值从select option binding传递给计算的可观察数组,但得到undefined错误:我可以在视图模型中访问此值吗?

我需要传递选定的值(ArtistId),以便我可以显示相册列表中的数据:

如果我只是对一个值进行硬编码,那就可以了。

示例:

    self.albumList = ko.computed(function () {
        return ko.utils.arrayFilter(discography(), function (item) {

            // Pass Selected Artist ID here instead of hard coding.

            return item.ArtistId === '1';

        });
    }); 

这是一个有效的JSFiddle

1 个答案:

答案 0 :(得分:1)

计算的observable可以访问任何其他可观察对象。因此,您需要访问selectedArtist observable:

self.albumList = ko.computed(function () {
    if (self.selectedArtist()) {
        return ko.utils.arrayFilter(self.discography(), function (item) {
            return item.ArtistId === self.selectedArtist().ArtistId;
        });
    }
});

https://jsfiddle.net/4djkngfy/2/