我有一个名为“应用程序”的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;
});
});