相关疑难解决方法(0)

你能调用ko.applyBindings来绑定局部视图吗?

我正在使用KnockoutJS并拥有主视图和视图模型.我想要一个对话框(jQuery UI one)弹出另一个视图,该视图要绑定一个单独的子视图模型.

使用AJAX检索对话框内容的HTML,所以我希望能够ko.applyBindings在请求完成后调用,并且我想将子视图模型绑定到通过对话框div中的ajax加载的HTML部分.

这实际上是可行的还是我需要在页面最初加载然后调用ko.applyBindings一次时加载我的所有视图和查看模型?

ajax html5 knockout.js

256
推荐指数
3
解决办法
12万
查看次数

可以使用cleanNode()来清除绑定吗?

使用下面的代码,输入#p_in将随输入#s_in的更改而更新.但我使用了cleanNode(秒).任何人都可以帮助理解绑定未清除的原因.

    <input id="p_in" data-bind="value: name"></input>
    <input id="s_in" data-bind="value: name"></input>
    <input id="cb" type="checkbox">same</input>

    <script type="text/javascript">
        function AddrDataSet (name) {
            this.name = ko.observable(name);
        };

        var primary_set = new AddrDataSet('p');
        var sec_set = new AddrDataSet('s');
        var pri = $('#p_in')[0];
        var sec = $('#s_in')[0];

        ko.applyBindings(primary_set, pri);
        ko.applyBindings(sec_set, sec);

        ko.cleanNode(sec); // clean it
        ko.applyBindings(primary_set, sec); // bind it to primary_set
        ko.cleanNode(sec); // clean it again

    </script>
Run Code Online (Sandbox Code Playgroud)

knockout.js

15
推荐指数
1
解决办法
4万
查看次数

当我使用动态html两次applyBindings时,Knockout会变得疯狂

我正在创建一个带有淘汰赛的单页应用程序...

我有一个GlobalViewModel来管理所有动态页面(我通过ajax获取html).

这是我的问题的一个例子:

http://jsfiddle.net/zWtrr/7/

当我加载相同模板2次(在"显示模板"中单击2次)时,敲门声变得疯狂并重复数据......如果检查可观察数组,则没有重复数据.

HTML:

<div id="container">
    <button data-bind="click: showView">show template</button>
    <div data-bind="html: templateHtml"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

脚本:

function GlobalViewModel(){
    var self = this;
    self.templateHtml = ko.observable();
    self.templateVM = ko.observable();

    self.showView = function(){
        //i get this html from ajax
        var pageHtml = "<div id='template' data-bind='with: templateVM'>"+
            "<button data-bind='click: showAll'>All</button>" +
            "<button data-bind='click: showNames'>Names</button>" + 
            "<button data-bind='click: showLastNames'>LastNames</button>" +
            "<button data-bind='click: showNickNames'>NickNames</button>" +
            "<ul data-bind='foreach: resultsToShow'>" +
            "    <li data-bind='text: $data'></li>" +
            "</ul>" +
            "</div>";
        self.templateHtml(pageHtml)
        self.templateVM(new ViewModel())
        ko.cleanNode(document.getElementById("template"))
        ko.applyBindings(window.gvm, document.getElementById("template"));
    } …
Run Code Online (Sandbox Code Playgroud)

jquery dynamic-html knockout.js single-page-application

3
推荐指数
1
解决办法
5229
查看次数