2015-07-01 53 views
-1

這似乎是使用淘汰賽的最基本部分,我不確定它爲什麼不起作用,但由於某種原因,我的5個淘汰賽中的2個守住了他們的新價值。Knockout Observable在給定新值時不會更新

在模型的建立:

self.CProviderIdentifier = ko.observable(); 
self.ReferringProviderIdentifier = ko.observable(); 
self.BillableCareProviderIdentifier = ko.observable(); 
self.ServiceLocationIdentifier = ko.observable(); 
self.PracticeLocationIdentifier = ko.observable(); 

內的AJAX調用,它返回一個JSON對象內部的一些項目,我提取的信息相關的塊,並把它們放到正確的觀察到:現在

visitModel.CProviderIdentifier(data.CareProviderIdentifier); 
visitModel.ReferringProviderIdentifier((data.ReferringProviderIdentifier == null || 
    data.ReferringProviderIdentifier == "undefined") ? 0 : data.ReferringProviderIdentifier); 
visitModel.BillableCareProviderIdentifier(data.BillableCareProviderIdentifier); 
visitModel.PracticeLocationIdentifier(data.PracticeLocationIdentifier); 
visitModel.ServiceLocationIdentifier(data.ServiceLocationIdentifier); 

,如果沒有他們的工作,這會使(部分)的意義,但只有CProviderIdentifier和ReferringProviderIdentifier沒有數據。在進入設置屬性之前,我已經在斷點處檢查了數據,並且數據的值是1003和0,但是兩個觀測值未定義爲上面的代碼塊。

我的工作得到一個搗鼓這方面的工作:https://jsfiddle.net/bz3mq6z9/

+0

你確定你沒有在你的'data'對象錯字?你可以嘗試:'var temp = data.CareProviderIdentifier; visitModel.CProviderIdentifier(temp);'並在調試器中觀察'temp'? – Amit

+0

這就是我的想法,CareProvider的數據是1003,ReferProvider的數據是我的測試項目。 –

+0

如果你輸入一個靜態值會發生什麼,比如說:'visitModel.CProviderIdentifier(12345);'? – Amit

回答

-1

分配在loadData函數取得。在它裏面,Javascript不知道什麼是visitModel。該變量不存在,在setter中沒有任何用處。

使用self而不是visitModel。淘汰賽這樣,知道他被分配值向視圖模型

問候

-1

你在你的代碼中的一些錯誤:

  1. 應該使用綁定DOM視圖模式:

    ko.applyBindings(visitModel);

  2. ko.observable是一個函數,所以你應該在合併字符串之前使用它。

    <span data-bind="text: CProviderIdentifier() + 'cp'"></span>

  3. 這不是一個好主意,用visitModelLoadData功能,你可以用self保持基準。

看到這個演示:http://jsfiddle.net/bz3mq6z9/6/

相關問題