knockout js jquery加载

时间:2014-01-26 23:12:29

标签: javascript jquery html html5 knockout.js

您好我正在尝试从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())

2 个答案:

答案 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会为您执行此操作(对先前部分的所有绑定进行适当的清理)。