2012-10-09 41 views
0

observable对象我用下面的Ajax代码由它的ID,以获得所谓的客户端对象像这样:映射/使用Ajax

​​

不过虽然selectedClient是可观察到的它的值不所以如果我结合说selectClient()的值。给文本框命名,改变文本框不会更新值。我不想创建一个函数和一个推送方法,我喜欢能够简单地将返回的对象放在未来的更改中。我能做些什么来使他们具有可观察的价值?

回答

1

selectedClient应该是可观察的,如果您想要反映UI中的更改,它也是属性。

你是如何创建你的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

+0

之前没有真正使用的映射,当我试图做到这一点我:不能调用方法“fromJS”的定义,我需要另一个脚本?如果是的话,我可以通过Nuget获取它吗? – user1166905

+0

@ user1166905:我发给你的链接已经有下载链接。 – TCM

+0

我发现一个Knockout.Mapping NuGet包已经得到了这个问题,但现在我不能再得到的值,即数据绑定=“值:selectedClient()。名称”之前工作,并说名称不存在对于selectedClient当我尝试并获得它在js – user1166905