Unbind view model from view in knockout

前端 未结 3 1399
無奈伤痛
無奈伤痛 2020-12-29 18:58

I\'m looking for unbind functionality in knockout. Unfortunately googling and looking through questions asked here didn\'t give me any useful information on the topic.

3条回答
  •  无人及你
    2020-12-29 19:32

    
        
            
            
            
            
        
        
            

    @Mark Robinson gave perfect solution, I've similar problem with single dom element and updating different view models on this single dom element.

    Each view model has a click event, when click happened everytime click method of each view model is getting called which resulted in unnecessary code blocks execution during click event.

    I followed @Mark Robinson approach to clean the Node before apply my actual bindings, it really worked well. Thanks Robin. My sample code goes like this.

    function viewModel(name, id, length){
    		var self = this;
    		self.name = name;
    		self.id = id;
    		self.length = length;
    	}
    	viewModel.prototype = {
    		showModelData: function(data){
    		console.log('selected model is ' + data);
    		if(data=='model1'){
    			ko.cleanNode(button1[0]);
    			ko.applyBindings(viewModel1, button1[0]);
    			console.log(viewModel1);
    		}
    		else if(data=='model2'){
    		ko.cleanNode(button1[0]);
    			ko.applyBindings(viewModel3, button1[0]);
    			console.log(viewModel2);
    		}
    		else if(data=='model3'){
    		ko.cleanNode(button1[0]);
    			ko.applyBindings(viewModel3, button1[0]);
    			console.log(viewModel3);
    		}
    	} 
    	}
    	$(document).ready(function(){
    		button1 = $(".modelBody");
    		viewModel1 = new viewModel('TextField', '111', 32);
    		viewModel2 = new viewModel('FloatField', '222', 64);
    		viewModel3 = new viewModel('LongIntField', '333', 108);
    		ko.applyBindings(viewModel1, button1[0]);
    	});
    	

提交回复
热议问题