【问题标题】:How to unsubscribe the subscribed function in knockout?如何取消订阅淘汰赛中的订阅功能?
【发布时间】:2012-05-26 01:14:21
【问题描述】:

我已经订阅了使用 ko 监听属性值变化的函​​数。

var self = this;
$( document ).ready( function () {

var postbox = new ko.subscribable();
var myViewModel =
{
    FirstName: ko.observable( "Bert" ),
    LastName: ko.observable( "pual" )
};
var sub = null;
for ( var i in myViewModel ) {
    var model = myViewModel[i];
    model.subscribe( self.notifyChange.bind( model, i ) );

}

$( '#unsubscribeButton' ).click( function () {
    // here i want to unsubscribe.
} );
 ko.applyBindings( myViewModel );
  });
 notifyChange = function ( PropName, newValue ) {
var self= this;
);
    }

这里我想从myViewModel的属性中一一退订notifyChange,怎么办?

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

    将调用订阅的结果存储在一个变量中(或者,在您的情况下,存储在一个数组中)。

    当您想取消订阅时,只需在每个订阅上调用 dispose。

    这里有完整的描述 - http://knockoutjs.com/documentation/observables.html

    您的代码将如下所示:

    //store subscriptions in array
    var subscriptions = [];
    
    for ( var i in myViewModel ) {
        var model = myViewModel[i];
        subscriptions.push(model.subscribe( self.notifyChange.bind( model, i ) ));
    }
    
    
    //unsubscribe
    for(var i in subscriptions) {
        subscriptions[i].dispose(); //no longer want notifications
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-20
      • 2016-02-29
      • 2012-10-09
      • 2015-03-27
      • 1970-01-01
      • 2015-01-04
      • 1970-01-01
      • 2012-08-13
      相关资源
      最近更新 更多