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 に答える