2014-06-18 2 views
0

나는 그 문제를 해결하기 위해 많은 시간을 보냈다. 같은 요소에 두 바인딩을 어떻게 할 수 있습니까?여러 번 바인딩 문제

HTML :

<div data-bind="with: model"> 
    <span data-bind="text: name"></span> 
</div> 
<button data-bind="click: changeModel">Change Model</button> 

자바 스크립트 :

$(window).load(function(){ 
    var model = { 
     name: 'John' 
    }; 

    var viewModel = new ViewModel(model); 
    ko.applyBindings(viewModel); 
}); 

var ViewModel = function(model) { 
    var self = this; 

    var nestedViewModel = new NestedViewModel(model); 
    self.model = ko.observable(nestedViewModel); 

    self.changeModel = function(){ 
     var model = { 
      name: 'Max' 
     }; 

     var nestedViewModel = new NestedViewModel(model); 
     self.model(nestedViewModel); 
    }; 
}; 

var NestedViewModel = function(model) { 
    var self = this; 

    self.name = model.name; 
}; 

이 당신이 중첩 된 객체를 사용하여 동일한 요소 모델을 변경할 수 있습니다

var app: any = new App(); 
    app.links.push({ 
     action:() => { 
      $.ajax({ 
       type: 'POST', 
       url: url 
      }).done(data => {         
         require(['App/App'], App=> { 
          console.log("App Filse Loaded"); 
          this.app = new App(); 
          ko.applyBindings(this.app);// Error "You cannot apply 
                 // bindings multiple times 
                 // to the same element" 
          this.app.isLoaded(true); 
          this.app.isReady(true); 
         }); 
      }) 
     }, 
     label : 'Create Subscription', 
    });   
    ko.applyBindings(app); 
}); 
+0

바인딩의 요점은 한 번에 바인딩 한 후 업데이트를하는 것입니다. 왜 바인딩 두 번? –

+0

여러 개의 바인딩을 가질 수 있지만 바인딩을 한 번만 적용합니다. – 4imble

+0

내가 필요로하는 것은 요소의 바인딩을 어떻게 든 지우는 것입니다. –

답변

1

나는 확실히 두 번째 trick.But을 할 것입니다 바인딩 전에 아주 나쁜 연습을하다 ko.cleanNode을 그