2014-10-27 77 views
0

我有一个ViewModel,里面有一个可观察对象。每当我点击一个按钮,我用ajax填充这个观察点:敲除文本绑定到json对象

$.ajax({ 
    url: '/Contracts/Details/' + id, 
    dataType: 'json', 
    type: 'GET', 
    success: function (data) { 
     self.showContractDetail(true); 
     self.contractDetail(data.contract); 
     alert(self.contractDetail().Partner.Surname); 
    } 
}); 

该警报显示正确的值。但在我的HTML我有:

<h2>contract number <span data-bind="text: contractDetail.ContractNumber"></span></h2>  
<h4>partner: <span data-bind="text: contractDetail.Partner.Surname"></span></h4> 

但没有显示。如果我用text: contractDetail().替换text: contractDetail.,则只显示第一个绑定。那就是:它显示contract number: 236578partner: <empty>。如果我评论data-bind="text: contractDetail().ContractNumber"那么会出现姓氏。

任何帮助,为什么发生这种情况?我不想将contractDetail绑定到我的viewModel。我希望我的viewModel包含具有复杂合同细节的observable。

回答

1

你可以让JSFiddle显示问题吗?我现在正在回答这个问题,因为我不得不说的评论太多了,但如果我不能重现问题,我无法确认它是否修复了任何问题。

您无权将text: contractDetail.更改为text: contractDetail().。当你这样做时,你的控制台中是否显示任何错误?

另一种方式是在一个虚拟的结合来包装这两个HTML行:

<!-- ko with: contractDetail --> 
<h2>contract number <span data-bind="text: ContractNumber"></span></h2>  
<h4>partner: <span data-bind="text: Partner.Surname"></span></h4> 
<!-- /ko --> 
+0

非常感谢你。它是这样工作的。 – gong 2014-10-27 12:28:37