I already subscribe the function to listen the property value change using 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; ); }
here i want to unsubscribe the notifyChange from myViewModel's property one by one, how to do this?
applyBindings do, The first parameter says what view model object you want to use with the declarative bindings it activates. Optionally, you can pass a second parameter to define which part of the document you want to search for data-bind attributes. For example, ko.
Knockout. js defines an important role when we want to detect and respond to changes on one object, we uses the observable. An observable is useful in various scenarios where we are displaying or editing multiple values and require repeated sections of the UI to appear and disappear as items are inserted and deleted.
Store results of call to subscriptions in a variable (or, in your case, in an array).
When you want to unsubscribe, simply call dispose on each subscription.
Fully described here - http://knockoutjs.com/documentation/observables.html
Your code will look like this:
//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 }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With