我有一个网格,其中包含多个业务对象。让我们称他们为产品。当您单击该项目时,我会进行 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 来证明这一点..