您好我正在尝试从jQuery Load动态加载knockout js html页面但是
您无法多次将绑定应用于同一元素。
如何使用jqyuery load加载knockout js页面。
我想要的是通过在用户点击链接时加载网址页面(Views / home.html或Views / login.html)来创建导航框架。
所以我无法在拳头加载
上加载所有knocokout viewmodel我正在尝试创建导航模型以仅加载/刷新页面的主体而不是整页。
例如
<ul class="nav navbar-nav" id="nav">
<li>
<a href="Views/home.html" class="active">Home</a>
</li>
<li>
<a href="Views/login.html">Login</a>
</li>
<li>
<a href="Views/Contactus.html">Contactus</a>
</li>
</ul>
<div id="body"></div>
如果首页点击
$("#body").load("Views/home.html");
如果登录点击
$("#body").load("Views/login.html");
Home.html中
var homeViewModel= function() {
this.firstName = ko.observable();
this.lastName = ko.observable();
};
ko.applyBindings(new homeViewModel());
的login.html
var loginViewModel= function () {
this.username = ko.observable("test");
};
ko.applyBindings(new loginViewModel())
答案 0 :(得分:2)
我已经附加和删除了节点,但依赖关系始终是viewmodel的名称必须是viewModel
ko.cleanNode($("#body")[0]);
$("#body").load(url, function() {
ko.applyBindings(new viewModel(), $("#body")[0]);
});
答案 1 :(得分:1)
您可能需要查看Pager.js,它会将knockout.js扩展为页面历史记录和部分加载。
在主页面中加载所有javascript。 保留仅包含带有绑定声明的html的partials(Views / home.html,Views / login.html)。 切换部分时,您不需要显式调用applyBindings,Pager.js会为您执行此操作(对先前部分的所有绑定进行适当的清理)。