Knockout JS - 单向绑定以保持服务器值?

时间:2013-02-05 13:30:39

标签: asp.net-mvc knockout.js

我目前正在MVC应用程序中的Knockout中设置一个表单并显示数据库中的数据,例如:

@Html.EditorFor(model => model.AddressPostcode) // This is filled in from the Controller.

这很好,正如预期的那样。但是,我在Knockout JS上做了很多工作,并希望在我的搜索中使用这个值(因此,data-bind="value: postcode"就可以使用此邮政编码元素。

问题?好吧,当你绑定到postcode: ko.observable('')时,预先填充的服务器值将替换为''(正如你所期望的那样)。有没有办法解决这个问题?

1 个答案:

答案 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
};