我有內部的主要功能和子功能,如:如何在viewmodel的內部函數中訪問外部函數observable?
var main= function() {
var self = this;
self.value1 = ko.observable("");
var data = self.value1();
self.revaluate = ko.computed(function(){
data = self.self.value1(); // i am overwriting
});
function inner(i1,i2)
{
var self= this ;
self.id1=ko.observable(i1);
self.id2=ko.observable(i2);
self.value2 = ko.observable("");
self.visibility = ko.computed(function() {
if (data == 1) {return true;}
else {false;}
});
}
}
ko.applyBindings(new main());
我需要inner
函數內value1
值應該是動態的。
我試圖將它存儲在一個變量中並訪問它,但它不會解決我的情況,因爲有一種情況,其中self.visibility
根本不會觸發並動態更新。
Onload我得到一個更新的value1
所以一切都會工作,但我有一個按鈕「goto next stage」,並點擊該按鈕我正在更新狀態,即self.value1(2)
。此時self.visibility
應該更新,因爲value1
有變化。
我試圖通過一個簡單的例子來展示我需要的東西,但實際上有一些更復雜的循環正在進行。
任何線索都會很棒。
不要忘記執行'value1',因爲它是一個可觀察的。另外,從你複製的問題來看問題:'else'位不返回任何東西,它只是「執行」false作爲語句(並且函數將最終返回'undefined',這是僞造的,所以它可能沒有被真正注意到)。 – Jeroen 2014-09-23 13:02:11
檢查我的編輯。 '數據從來沒有真正重新評估'現在它會但仍然是同樣的問題,我不能讓我的內部函數在運行中更新'數據'。 – 2014-09-23 13:05:15
'你在代碼中提到的'icepick''如果(self.value1 == 1'不會工作,它會因爲範圍問題給出未定義的代碼 – 2014-09-23 13:06:53