如何在挖空中取消订阅的函数

How to unsubscribe the subscribed function in knockout?

本文关键字:函数 取消      更新时间:2023-09-26

我已经订阅了该函数以使用 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的属性中一一更改,该怎么做?

将调用订阅的结果存储在变量中(在本例中为数组中(。

如果要取消订阅,只需在每个订阅上调用 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
}