簡體   English   中英

當我需要使用綁定重繪html時重新綁定jout

[英]Rebind knockout js when I need to redraw html with bindings

我有一種情況,我動態構建一個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>');

我建立了我的日歷控件,當然這只是其中的一部分,但我希望你能得到一般的想法。

我的淘汰視圖模型方法:

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});            
    }

}

在我的頁面加載我構建我的日歷div,然后我調用ko.applyBindings()到我的視圖模型,它的工作原理。 但是,當我點擊上一個月的方法來調整需要根據正確的月份重繪日歷的btn時,淘汰賽停止工作。 我重繪了包含所有敲除綁定的整個父div。 有誰知道我的問題的解決方案。 我需要重新繪制里面有KO綁定的div,所以也許我正在尋找的是Knockout的某種綁定刷新方法?

找到解決方案:

如何在Knockout.js中清除/刪除可觀察的綁定?

 var element = $('#elementId')[0]; 
 ko.cleanNode(element);

接着

 ko.applyBindings(myVieModel, parentDiv)

確保所有需要更新的html元素綁定到可觀察的函數,即observablefoo而不是observablefoo()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM