1

我有一个网格,其中包含多个业务对象。让我们称他们为产品。当您单击该项目时,我会进行 AJAX 调用并获取数据并创建一个绑定到模式“窗口”(使用引导程序)的 Knockout viewModel。用户可以更改产品,例如他们可以将名称更改为其他名称,他们可以点击取消或保存。当用户点击保存/取消时,他们将被带回网格,然后可以单击另一个产品,从而弹出带有新产品的模式(另一个 AJAX 调用以获取数据等)。

好吧,我再次调用了 KO.applyBindings(viewModel)。我想这可能是个坏主意。我注意到的是,如果用户没有输入名称(这是必需的),我会收到两条验证消息,上面写着“需要名称”。所以这告诉我必须绑定两个事件(或某事或其他)。所以我做了几次谷歌搜索,我发现了几篇使用 ko.cleanNode(node) 的文章,如果你要调用 applyBindings 两次。那并没有解决我的问题。我正在使用 knockout.validation.js 并且我还扩展了我的 name 属性,如下所示:

vm.Name.extend({
        required: { message: 'Name is required.' },
        minLength: 1
    });

无论如何要清除扩展或 unApplyBindings 吗?还是我只是用错了KO?我真的很喜欢它,但要让它做你想做的事情需要一些时间(这就是他们付钱给我的原因)。如果需要,我也许可以让 Fiddle 来证明这一点..

4

1 回答 1

0

我知道这是一个老问题,但我遇到了同样的问题。我从 github 站点上的一个示例开始,该示例定义了一个用于显示验证错误的自定义模板。当我把它拿出来时,什么都没有改变,我的异常消失了。

我删除了:

<script id="customMessageTemplate" type="text/html"><!--
    --><em class="customMessage" data-bind="validationMessage: field"></em>
</script>
---
<div class="row" data-bind="validationOptions: { messageTemplate: 'customMessageTemplate' }">

希望这对其他人有帮助。

于 2017-05-11T16:36:52.297 回答