我有一个名为“应用程序”的viewModel,其中包含申请人的信息。在剔除视图中看起来像这样:

[![在此处输入图片描述] [1]] [1]

我尝试遍历此viewModel并根据特定条件仅过滤出一个元素。

我最终想要做的是,我只想在模式中显示一个“应用程序”元素。

所以,到目前为止,我所做的是

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


我添加了一个名为applicationKey的属性,因此它直接检索申请人的“ applicationKey”。

我做了一个jquery函数,通过执行以下操作返回了这个applicationKey:

                $('#previewApplicantModal').on('show.bs.modal', function (e) {
                    var key = $(e.relatedTarget).data('applicationkey');
                    return key;
                });


它读取“ data-applicationKey”并返回相应的applicationKey。

例如,

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


退货

abd263zqe


之后,我尝试创建一个名为“ previewApplication”的新viewModel,该模型仅返回具有该“ applicationKey”的应用程序元素。我所做的是,我遍历了“应用程序” viewModel,并且仅在“ i.application.applicationKey”等于我上面编写的jquery函数返回的“ applicationKey”时返回。代码如下:

            self.previewApplications = ko.computed(function () {
                return ko.utils.arrayMap(self.applications(), function (i) {
                    if(i.application.applicationKey == THE JQUERY FUNCTION THAT RETURNS THE applicationKey)
                       return i.application;
                });
            });


因此,我想返回具有与jquery函数返回的applicationKey相同的applicationKey的“ application”元素,但是我不知道如何将其放入语法中。

最佳答案

尝试修改您的jQuery事件以将键存储在您可观察的PreviewApplicationKey中

$('#previewApplicantModal').on('show.bs.modal', function (e) {
    var key = $(e.relatedTarget).data('applicationkey');
    viewModel.previewApplicationKey(key);
});


然后在比较功能中对照该值

self.previewApplications = ko.computed(function () {
    return ko.utils.arrayMap(self.applications(), function (i) {
        if(i.application.applicationKey == self.previewApplicationKey())
            return i.application;
    });
});

08-08 03:29