【发布时间】:2017-11-20 14:55:59
【问题描述】:
我有一个按钮的代码(不是我写的),它可以为某人添加书签并将其添加到候选名单中。它看起来像这样:
JS & Ajax 部分:
self.isShortlisted = ko.observable(@(Model.Application.IsShortlisted ? "true" : "false" ));
self.isHidden = ko.observable(@(Model.Application.IsHidden ? "true" : "false" ));
$('form#shortlistForm').ajaxForm(function () {
viewModel.applicationViewModel.isShortlisted(true);
});
$('form#unshortlistForm').ajaxForm(function () {
viewModel.applicationViewModel.isShortlisted(false);
});
【问题讨论】:
-
请不要就同一个问题问那么多问题。只问一个问题并对其进行编辑以更改其内容。 :-)
-
你能发布视图模型
viewModel和applicationViewModel吗? -
如果
applicationViewModel在你的 ViewModel 中是一个 observable,那么你应该在你的 Ajax 函数中写viewModel.applicationViewModel().isShortlisted(true);。也就是将()添加到applicationViewModel。 -
抱歉重复的问题。我添加了“需要”重新加载以查看更改的页面的脚本部分。请帮助
-
这句话
self.applications = ko.observableArray(@Html.Json(Model.ApplicationCompatibilities.Select(o => o.JsonForm)) || []);定义了一个可观察的数组,但是它的内容是不可观察的。当您更改属性isShortListed时,什么也没有发生,因为它不是可观察的。您可以使用映射插件 (knockoutjs.com/documentation/plugins-mapping.html) 强制其内容可观察,但随后您必须更改所有视图模型。
标签: javascript jquery html ajax knockout.js