如何在淘汰赛中“不干涉”?

时间:2015-07-29 16:10:28

标签: knockout.js

我有一个这样的视图模型:

var myViewModel = function (){
    var self= this;
    self.someObservable = ko.observable();

    var someObservableSubscription = self.someObservable.subscribe(function(){
        //some stuff including a different ajax 'Get'
    });

    self.ajaxPost = function(){
        //some ajax
        //on done call this method
        cleanModel();
    }

    var cleanModel = function(){
        someObservableSubscription.dispose();
        self.someObservable('');

        //now i want to resubscribe to my function here
        //this is where I need help

}

我是否还要再做一次self.someObservable.subscribe(function(){ //some function})?我想清理变量中的值而不会丢失我的observable,但如果我在订阅时清理它,它将尝试使用null值进行ajax调用。

我想另一种解决方法是将我的订阅函数包装在if中,在执行任何操作之前检查observable的值是否有效。哪一种最好?还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

而不是调用dispose然后调用" undispose" < ---(构成一个),处理更改值的正确方法是将subscribe函数的内部包装在if语句中。

以下示例:

var someObservableSubscription = self.someObservable.subscribe(function(){
    if (self.someObservable() > 0) {
        //some stuff including a different ajax 'Get'
    }
});