我目前正在MVC应用程序中的Knockout中设置一个表单并显示数据库中的数据,例如:
@Html.EditorFor(model => model.AddressPostcode) // This is filled in from the Controller.
这很好,正如预期的那样。但是,我在Knockout JS上做了很多工作,并希望在我的搜索中使用这个值(因此,data-bind="value: postcode"
就可以使用此邮政编码元素。
问题?好吧,当你绑定到postcode: ko.observable('')
时,预先填充的服务器值将替换为''(正如你所期望的那样)。有没有办法解决这个问题?
答案 0 :(得分:5)
值绑定覆盖了预定义的值,我认为它是一个使用服务器端MVC和客户端MVVM的反模式,但如果你真的想要采用这条路线,你需要创建自己的绑定,如
ko.bindingHandlers.valueWithInit = {
init: function(element, valueAccessor, allBindingsAccessor, context) {
var observable = valueAccessor();
var value = element.value;
observable(value);
ko.bindingHandlers.value.init(element, valueAccessor, allBindingsAccessor, context);
},
update: ko.bindingHandlers.value.update
};