2012-05-18 21 views
41

Już subskrybuję funkcję do nasłuchu zmiany wartości właściwości za pomocą ko.Jak zrezygnować z subskrybowanej funkcji w nokaucie?

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

tutaj chcę zrezygnować z notifyChange z jedną właściwość myViewModel w jednym, jak to zrobić?

Odpowiedz

91

Zapisz wyniki wywołania subskrypcji w zmiennej (lub, w twoim przypadku, w tablicy).

Jeśli chcesz się wypisać, po prostu zadzwoń do każdego z subskrypcji.

pełni opisane tutaj - http://knockoutjs.com/documentation/observables.html

Twój kod będzie wyglądać następująco:

//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 
} 
Powiązane problemy