다시

2016-12-26 4 views
0

난 당신이 내가이 (가) menuholder 요소에만 바인딩 appliying하고 볼 수있는이다시

// html 
<div class="collapse navbar-collapse js-navbar-collapse" id="menuholder"> 
<ul foreachbinding> 
    <li binding> 
    </ul> 
</div> 

<div id="maincontent"> 
</div> 
// javascript 
     var VM = function() { 
      var self = this; 


      self.menuitems = ko.observableArray([]); 
      self.loadmenu = function() { 

       jQuery.ajax({ 
        url: "/Home/GetMainMenu", 
        success: function (html) { 
         self.menuitems = html.menus 


        }, 
        async: false 
       }); 
      } 
      self.loadmenu(); 
     }; 

ko.applyBindings(VM, document.getElementById("menuholder")); 

처럼 뭔가 인덱스 페이지와 관련된 뷰 모델이 3.4 같은 요소에 바인딩을 적용 할 수 없습니다 knockoutjs. 그것은이

//html 
<body id="homepage"> 

</body> 
//javascript 
    var homeVM = function() { 
      var self = this; 
      self.topventes = ko.observableArray([]); 
      self.promos = ko.observableArray([]); 
      self.arrivage = ko.observableArray([]); 
      self.nouveaute = ko.observableArray([]); 
      self.loadcontent = function() { 

       jQuery.ajax({ 
        url: "/Home/GetHomePageContent", 
        success: function (html) { 

         self.topventes = html.topventes; 
         self.arrivage = html.arrivage; 
         self.nouveaute = html.nouveaute; 
         self.promos = html.promo; 
        }, 
        async: false 
       }); 
      } 
      self.loadcontent(); 
     }; 

     ko.applyBindings(homeVM, document.getElementById("homepage")); 

같은 자신의 뷰 모델의

$("#maincontent").load("pages/home.html"); 

home.html을 페이지가 가지고 있지만 런타임에 나는 를 얻을 :

지금 나는이와 함께 동적으로 maincontent 요소의 내용을로드 "동일한 요소에 바인딩을 여러 번 적용 할 수 없습니다." 오류.

무슨 일이 일어나고 있는지 알려주세요.

+0

'#maincontainer'는 무엇입니까?

?입니다. 이 ko.applyBindings (homeVM, document.getElementById ("homepage")))는 태그를 homeVM과 바인딩하려고합니다. body 태그를 바인딩하는 것은 전체 문서에 바인딩된다는 것을 의미합니다. –

+0

혼란스럽게 생각하지만 혼란 스럽지만 (고정) 약간의 복사/붙여 넣기 실수를 한 경우 maincontainer는 maincontent와 동일하며이 요소는 인덱스 페이지에 있으며 jQuery 아약스로 동적 내용 HTML 페이지를로드합니다. – user2475096

+0

ko.applyBindings (homeVM, document.getElementById ("homepage")); 자식 페이지에 색인이 없기 때문에 바운드 본문은 색인 페이지가 아니라 동적으로로드 된 페이지에서 가져옵니다 – user2475096

답변

2

근본 원인은 본체 태그가있는 home.html입니다. 그것은 KO가 문서의 전체 구조를 오해하게합니다. 어쨌든, 어쨌든 body 태그를 넣을 수는 없습니다.

body 태그를 div 태그로 변경하면 수정해야합니다.