我使用以下ajax代码来获取一个名为Client的对象,它的ID是这样的:
$.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是一个可观察的,但是如果我将say selectedClient()。Name的值绑定到文本框,则其值不是这样,更改文本框不会更新该值。我不想创建函数和推送方法,我喜欢能够简单地将返回的对象放入,以便将来的更改无缝。我能做些什么来使它们成为可观察的值?
答案 0 :(得分:1)
selectedClient
应该是可观察的,如果你想要反映UI中的变化,那么它的属性也是如此。
您是如何创建selectedClient的?
你应该创建一个这样的类:
Client = function(data){
ko.mapping.fromJS(data,{},this);
}
在您的viewmodel中有一个属性,如下所示:
selectedClient = ko.observable()
你的ajax成功方法应该是:
success: function (result) {
model.selectedClient(new Client (result));
$("#loader").hide();
}
这将确保只要对象的属性发生更改,您的视图就会反映出来。有关详细信息,请参阅以下链接: