核心提示:可能使用了观察者模式,在ko.observable中埋伏了.fire(),每当调用observable对数据进行更改时,fire()会通知viewmodel,以这种方法监控对数据的调用。以下是我理解的...
可能使用了观察者模式,在ko.observable中埋伏了.fire(),每当调用observable对数据进行更改时,fire()会通知viewmodel,以这种方法监控对数据的调用。以下是我理解的实现方式:
function observable(value){
return function(replaceVal){
if(replaceVal){
ko.fire() //通知viewModel有改动
value = replaceVal;
}else{
return value;
}
}
}
用data-bind绑定view和model。考虑到表现和行为的分层,data-bind最好在js中的init函数中写入。 在octopus模式中,对data的取用往往需要在octopus对象上增添一个相应的method,这很笨拙且浪费资源。ko用obsevable返回的函数来代理data变量,解决了这个问题。


