0

次のajaxコードを使用して、次のようなIDでClientというオブジェクトを取得しました。

$.ajax({
            url: "api/client/GetClient/" + id,
            contentType: 'json',
            success: function (result) {
                model.selectedClient(result);
                $("#loader").hide();
            },
            failure: function (result) {
                alert(result.d);
                $("#loader").hide();
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert("An error occurred, please try again.");
                $("#loader").hide();
            }
        });

ただし、selectedClientは監視可能ですが、その値は監視可能ではありません。たとえば、selectedClient()。Nameの値をテキストボックスにバインドすると、テキストボックスを変更しても値は更新されません。関数とプッシュメソッドを作成したくありません。返されたオブジェクトを単純に配置できるので、将来の変更がシームレスになります。それらを観測可能な値にするために何ができますか?

4

1 に答える 1

1

selectedClientUI の変更を反映する場合は、監視可能である必要があり、プロパティも監視可能である必要があります。

selectedClient をどのように作成していますか?

実際には、次のようなクラスを作成する必要があります。

Client = function(data){
    ko.mapping.fromJS(data,{},this);
}

ビューモデルに次のようなプロパティがあります。

selectedClient = ko.observable()

ajaxの成功方法は次のとおりです。

success: function (result) {
            model.selectedClient(new Client (result));
            $("#loader").hide();
         }

これにより、オブジェクトのプロパティが変更されるたびに、ビューに反映されます。詳細については、次のリンクを参照してください。

http://knockoutjs.com/documentation/plugins-mapping.html

于 2012-10-10T03:50:16.850 に答える