在viewModel中ko.dependentObservable?

时间:2014-06-02 12:39:06

标签: jquery knockout.js knockout-2.0

我是Knowckout.js的新手并完成了这个演示。

http://jsfiddle.net/Yawer/7QXCN/#&togetherjs=Aunph9nuxf

在此实现中,dependentobervable是外侧viewModel。我的问题是,是否有一种方法,一个dependentObservable可以像view和其他属性一样进入viewModel吗?

以下是我的代码:

$(function(){

var viewModel={
    name: ko.observable("Biala"),
    changedName: function(){
    this.name("Hussain");
},
    nvtoggle: ko.observable(true)

};

viewModel.fullName= ko.dependentObservable(function(){
    return this.name() + " is " + (this.nvtoggle() ? " " : " not ") + "visible";
},viewModel);

    ko.applyBindings(viewModel);

});

1 个答案:

答案 0 :(得分:1)

是的,很可能将dependantObservable放入viewmodel :)

请参阅下面的代码并附上jsfiddle - http://jsfiddle.net/B6AtE/1/

有几点需要注意:

  • 我已将dependantObservable更改为computed,因为这是他们现在所称的。
  • 我已将您的viewmodel更改为function并将其移至您的ready函数之外。这只是为了整洁 - 如果你将它全部留在就绪功能中,它就可以正常工作。
  • 我在viewmodel的开头添加了var self = this;。在这种情况下,这没有功能效果,但在视图模型中执行此操作是个好主意。添加后,您可以在该视图模型中使用self,并确保您处于正确的上下文中。

如果您对我所做的更改有任何其他疑问,请与我们联系。

  

var viewModel = function(){

var self = this;
self.name = ko.observable("Biala");
self.changedName = function() {
    self.name("Hussain");
};
self.nvtoggle = ko.observable(true);

self.fullName = ko.computed(function() {
    return self.name() + " is " + (self.nvtoggle() ? " " : " not ") + "visible";
}); 
     

};

     

$(函数(){

var vm = new viewModel();                                
ko.applyBindings(vm); 
     

});