2013-11-25 29 views
1

我有一個自定義綁定,它初始化一個對象,該對象需要在綁定元素被刪除後被破壞。可以使用析構函數來挖掘自定義綁定嗎?

我能想到的唯一選擇是檢測元素何時消失,然後銷燬該對象,但我仍然沒有找到辦法做到這一點。

回答

3

淘汰賽有custom disposal回調可以調用。從their page的例子。

ko.bindingHandlers.myWidget = { 
    init: function(element, valueAccessor) { 
        var options = ko.unwrap(valueAccessor()), 
            $el = $(element); 
  
        $el.myWidget(options); 
  
        ko.utils.domNodeDisposal.addDisposeCallback(element, function() { 
            // This will be called when the element is removed by Knockout or 
            // if some other part of your code calls ko.removeNode(element) 
            $el.myWidget("destroy"); 
        }); 
    } 
}; 
0

也許在您的init中使用disposeWhenNodeIsRemoved

的disposeWhenNodeIsRemoved選項確保這個計算,如果剔除刪除我們的元素,就像在 一個模板方案 觀察到的將被銷燬。

代碼示例:

ko.bindingHandlers.isolatedOptions = { 
    init: function(element, valueAccessor) { 
     var args = arguments; 
     ko.computed({ 
      read: function() { 
       ko.utils.unwrapObservable(valueAccessor()); 
       ko.bindingHandlers.options.update.apply(this, args); 
      }, 
      owner: this, 
      disposeWhenNodeIsRemoved: element 
     }); 
    } 
}; 

來源:Knockout.js Performance Gotcha #3 - All Bindings Fire Together.

相關問題