核心提示:可能使用了观察者模式,在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变量,解决了这个问题。