2016-12-26 27 views
0

有一个索引页,这样knockoutjs 3.4不能申请绑定到相同的元素,我再次

// 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")); 

相关的东西,你能看到我的appliying只有绑定到menuholder元素的视图模型。

现在我这个动态加载搜索Maincontent元素的内容:

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

的home.html的页面有是这样的

//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")); 

自己的视图模型,但在运行时我得到“不能将绑定多次应用于同一元素”错误。

有什么想法是怎么回事?

+0

什么是'#maincontainer',是

?这个ko.applyBindings(homeVM,document.getElementById(“homepage”));,你试图将标签和你的homeVM绑定。我不知道如何组织你的html,绑定body标签也意味着绑定到整个文档。 –

+0

对不起,我已经做了一个复制/粘贴错误(固定),maincontainer是一样的maincontent,这个元素是在索引页面中,我加载动态内容html页面与jquery ajax中。 – user2475096

+0

ko.applyBindings(homeVM,document.getElementById(“homepage”));在子页面不在索引中,所以绑定的主体不是索引页面,而是来自动态加载的页面 – user2475096

回答

2

根本原因是你的home.html有身体标记。这会导致KO误解文件的整体结构。无论如何,无论如何,您无法将body标记放在该视图中。

只要将body标记更改为div标记,就应该固定。

相关问题