我有内部的主要功能和子功能,如:如何在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