web-dev-qa-db-fra.com

Comment désinscrire la fonction souscrite en knockout?

Je souscris déjà la fonction pour écouter le changement de valeur de propriété en utilisant 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;
);
    }

ici, je veux me désabonner un par un de la propriété notifyChange de myViewModel, comment faire?

44
BalaKrishnan웃

Stockez les résultats de l'appel aux abonnements dans une variable (ou, dans votre cas, dans un tableau).

Lorsque vous souhaitez vous désabonner, appelez simplement dispose de chaque abonnement.

Entièrement décrit ici - http://knockoutjs.com/documentation/observables.html

Votre code ressemblera à ceci:

//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
}
95
Artem