【发布时间】:2011-07-03 12:02:18
【问题描述】:
我有一个脚本,它通过将空视图模型应用于我的表单来初始化淘汰赛。
当用户在表单中输入数据时,视图模型会相应更新 - 这是预期的行为。
JavaScript
var viewModel = {
myField : ko.observable(),
init : function (somedata) {
...
ko.applyBindings(this, container);
},
...more stuff...
}
部分
<%:Html.TextBoxFor(x => x.MyField, new Dictionary<string, object> { { "data-bind", "value: myField, valueUpdate: 'keyup'" } })%>
当我调用我的 javascript 以在现有表单中应用敲除时,MyField(然后在我的输入字段中)中已经存在的值会被我的敲除视图模型中的空数据擦除(该视图模型是我驻留的 javascript 的一部分在另一个文件中)。
当页面被加载时,MVC 确保MyField 输入元素被先前从MyField 输入的数据填充。当调用 init 时,该字段将被视图模型中的值覆盖 myField 为空,因为它是一个静态 JavaScript 文件。
我该如何解决这个问题?
【问题讨论】:
-
只是一个想法,但是在你申请 KO 之前你不能从表单上的字段构建一个 viewModel 吗?那不是你的 viewModel 吗?
-
@epitka: 是的,但是当我可以使用 Html 帮助器构建初始输入元素时,asp.net mvc 为我节省了很多工作 - 不使用 Html 帮助器将是一个选项并且做到 100% 淘汰赛风格...
标签: c# asp.net-mvc knockout.js