3

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

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

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

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

4

1 回答 1

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
};
于 2013-02-05T13:37:12.620 回答