2014-10-27 120 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