在knockout.js viewmodel(array)中存储特定元素

时间:2017-06-15 21:19:23

标签: javascript c# mvvm knockout.js

我想解析现有viewModel中的特定元素并将其放入新数组中。

我有一个应用程序viewModel,它有大量的申请人信息。它按以下方式调用:

 self.applications = ko.observableArray(@Html.Json(Model.ApplicationCompatibilities.Select(o => o.JsonForm)) || []);

enter image description here

所以"应用"对象中有几个元素,如上图所示。

我想做的是,我只想检索" applicationKey"元素成新数组。所以我做的是:

            self.previewApplication = ko.computed(function () {
                return ko.utils.arrayFilter(self.applications(), function (i) {
                    return i.application.applicationKey;
                });
            });

我打算遍历" self.applications()" viewModel并仅返回" application.applicationKey"。但实际上我得到的是:

enter image description here

我只是得到相同的"应用程序"新viewModel中的对象。 我怎样才能得到一个只有" application.applicationKey"的数组? ?

谢谢!请帮助!

编辑:

现在有效!现在我的viewModel.previewApplication()给了我一个applicationKey的列表。现在我想要做的是,我想添加一个加载模态的链接。在该模态中,我想显示特定的"应用程序"具有特定的" applicationKey"

例如,指向模态的链接如下所示:

<a href="#" data-toggle="modal" data-target="#previewApplicantModal" data-bind="attr: { 'data-applicationKey': application.applicationKey }">
     Preview Application
</a>

所以如果我检查链接的元素,它有一个新的数据绑定:

<a href="#" data-toggle="modal" data-target="#previewApplicantModal" data-bind="attr: { 'data-applicationKey': application.applicationKey }" data-applicationkey="abc976cfx">
    Preview Application
</a>

最后,我想循环使用&#34;应用程序&#34;对象并仅返回&#34;一个&#34;具有&#34; abc976cfx&#34;的对象元素作为其applicationKey。

有一种简单的方法吗?我附上了截图以便更好地解释。

enter image description here

1 个答案:

答案 0 :(得分:1)

arrayFilter过滤数组,如果项目符合您的过滤条件,则函数返回true或false。您想要arrayMap