2012-05-18 4 views
41

Ich abonniere bereits die Funktion, um die Änderung der Eigenschaftswerte mithilfe von ko anzuhören.Wie kann ich die abonnierte Funktion in Knockout abbestellen?

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; 
); 
    } 

hier möchte ich durch eine der NotifyChange von myViewModel Eigentum ein austragen, wie dies zu tun?

Antwort

91

Speichern Sie die Ergebnisse des Aufrufs von Abonnements in einer Variablen (oder in Ihrem Fall in einem Array).

Wenn Sie sich abmelden möchten, rufen Sie einfach bei jedem Abonnement an.

Fully hier beschrieben - http://knockoutjs.com/documentation/observables.html

Ihr Code wie folgt aussehen:

//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 
} 
Verwandte Themen