当我需要使用绑定重绘html时重新绑定jout

Ala*_*ski 4 javascript data-binding knockout.js

我有一种情况,我动态构建一个div容器,其他html元素内部绑定到我的淘汰视图模型.它可以解决我在我的挖空视图模型上调用一个需要重绘整个div的方法的问题.重绘淘汰赛停止工作后.

例如:

 calendar += ('<div class="month-nav-container"><div class="nav-prev" data-bind="click:          $root.showPreviousMonthOnPrevMonthBtnClick" ><<<</div><span class="month-name-calendar">' + monthNames[month] + '</span><div class="nav-next" data-bind="click: $root.showNextMonthOnNextMonthBtnClick" >>>></div></div>');
Run Code Online (Sandbox Code Playgroud)

我建立了我的日历控件,当然这只是其中的一部分,但我希望你能得到一般的想法.

我的淘汰视图模型方法:

self.showPreviousMonthOnPrevMonthBtnClick = function () {
    alert("prev");
    var $calendar = $("#calendar");
    $calendar.empty();

    ////// previous month
    if (self.calendarDisplayDate.month == 0) {
        $calendar.calendarWidget({ month: 12, year: self.calendarDisplayDate.year - 1 });
    } else {
        $calendar.calendarWidget({ month: self.calendarDisplayDate.month - 1, year: self.calendarDisplayDate.year});            
    }

}
Run Code Online (Sandbox Code Playgroud)

在我的页面加载我构建我的日历div,然后我调用ko.applyBindings()到我的视图模型,它的工作原理.但是,当我点击上一个月的方法来调整需要根据正确的月份重绘日历的btn时,淘汰赛停止工作.我重绘了包含所有敲除绑定的整个父div.有谁知道我的问题的解决方案.我需要重新绘制里面有KO绑定的div,所以也许我正在寻找的是Knockout的某种绑定刷新方法?

Ala*_*ski 19

找到解决方案:

如何在Knockout.js中清除/删除可观察的绑定?

 var element = $('#elementId')[0]; 
 ko.cleanNode(element);
Run Code Online (Sandbox Code Playgroud)

然后

 ko.applyBindings(myVieModel, parentDiv)
Run Code Online (Sandbox Code Playgroud)