Knockout.js 应用绑定两次,验证

Knockout.js 应用绑定两次,验证,knockout.js,knockout-validation,Knockout.js,Knockout Validation,我有一个网格,其中包含多个业务对象。让我们称之为产品。当您单击该项时,我会调用AJAX并获取数据,然后创建一个Knockout viewModel,该viewModel使用引导绑定到一个模式窗口。用户可以更改产品,例如,他们可以将名称更改为其他名称,他们可以单击“取消”或“保存”。当用户点击save/cancel时,他们会被带回到网格中,然后在网格中单击另一个产品,从而弹出带有新产品的模式另一个AJAX调用以获取数据,等等 我又给KO.applyBindingsviewModel打电话了。我想那

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

我又给KO.applyBindingsviewModel打电话了。我想那可能是个坏主意。我注意到的是,如果用户没有输入所需的名称,我会收到两条验证消息,表明名称是必需的。所以这告诉我,两个事件必须是绑定的或其他的。所以我做了几次谷歌搜索,发现了几篇使用ko.cleanNodenode的文章,如果你要调用applyBindings两次的话。这并没有解决我的问题。我正在使用knockout.validation.js,我还扩展了我的name属性,如下所示:

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

是否仍有清除扩展或取消应用绑定的方法?或者我只是用错了KO?我真的很喜欢它,但它需要一些时间来做你想让它做的事,这就是为什么他们付钱给我。如果需要的话,我也许可以用小提琴来证明这一点。

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

我删除了:

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

希望这对其他人有所帮助。

谢谢您的编辑。我将尝试找出如何使代码看起来像那样。我找到了一个解决方法。我不喜欢,但我需要继续前进。目前,当我返回编辑另一个对象时,我不再应用绑定,我只是使用从服务器获得的JSON对象设置viewModel的属性。。我设置了一个标志来指示我已经绑定过一次,所以下次我只需跳过绑定并执行viewModel.namedata.name。。虽然不漂亮,但很管用。。我不认为这个答案,我会检查回来看看是否有更好的方法来做到这一点。