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

Chr*_*xon 3 asp.net-mvc knockout.js

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

@Html.EditorFor(model => model.AddressPostcode) // This is filled in from the Controller.
Run Code Online (Sandbox Code Playgroud)

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

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

And*_*ers 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
};
Run Code Online (Sandbox Code Playgroud)