ApplyBindings两次,验证

时间:2013-03-17 02:39:06

标签: knockout.js knockout-validation

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

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

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

无论如何要清除extend或unApplyBindings?或者我只是使用KO错了?我真的很喜欢它,但它需要一些时间才能让它做你想做的事(这就是为什么他们付钱给我)。如果需要,我可以让小提琴演示这个......

1 个答案:

答案 0 :(得分: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' }">

希望这有助于其他人。