我有一个网格,其中有几个业务对象。让我们称他们为产品。当你点击这个项目时,我做了一个AJAX调用并获取数据并创建一个绑定到模式“窗口”(使用引导程序)的Knockout视图模型。用户可以更改产品,例如他们可以将名称更改为其他名称,他们可以取消或保存。当用户点击保存/取消时,他们被带回到网格,然后可以点击另一个产品,从而弹出一个新产品的模式(另一个AJAX调用来获取数据等)。ApplyBindings两次,验证
那么我再次调用KO.applyBindings(viewModel)。我想这可能是一个坏主意。我注意到的是,如果用户没有输入名称(这是必需的),我会得到两条验证消息,说“名称是必需的”。所以这告诉我必须绑定两个事件(或其他)。所以我做了几次谷歌搜索,并且我发现了几篇使用ko.cleanNode(节点)的文章,如果你打算两次调用applyBindings。这并没有解决我的问题。我使用knockout.validation.js和我还要name属性是这样的:
vm.Name.extend({
required: { message: 'Name is required.' },
minLength: 1
});
反正是有清除出延长或unApplyBindings?或者我只是使用KO错误?我非常喜欢它,但需要一段时间才能做到你想做的事(这就是为什么他们付钱给我)。如果需要的话,我也可以让小提琴演示这个..
感谢您的编辑。我会试图弄清楚如何让代码看起来像那样。 – Maccurt 2013-03-17 03:11:09
我发现了一个破解来解决这个问题。我不喜欢它,但我需要继续前进。目前,当我回去编辑另一个对象时,我不再应用绑定,我只是使用从服务器获得的JSON对象设置viewModel的属性。我设置了一个标志来向我表明我已经绑定一次,所以下次我只是跳过绑定,并做viewModel.name(data.name)..不漂亮,但它的工作..我不认为这回答,我会检查回来看看如果有更好的方法来做到这一点.. – Maccurt 2013-03-17 03:13:48