1
我想關閉此觀察器,因爲它一直重複擊中「kendoWidgetCreated」事件,並導致無限循環,我點擊kendoGrid.refresh()
。創建並摧毀角度觀察者
如何關閉它,然後再打開?
scope.$on("kendoWidgetCreated", function (ev, widget) {
var kendoGrid = widget.element.parent().find('.k-grid').data("kendoGrid");
if (kendoGrid != undefined) {
kendoGrid.$angular_scope.compileTemplate();
kendoGrid.refresh();
}
});
我想是這樣的,但不能讓觀察者觸發:
var kendoWidgetWatcher = scope.$watch("kendoWidgetCreated", refreshKendoWidgets);
var refreshKendoWidgets = function (ev, widget) {
// widget compile/refresh code here...
}
建議總是讚賞...
問候, Bob
***** UPDATE **** 我最初的想法是創建一個匿名函數不工作;然而,潘卡爾的答案在下面爲我工作。 這裏的更新工作版本:
// setup new 'kendoWidgetWatcher' object for Kendo widget watcher, compile/refresh Kendo grids/charts
var kendoWidgetWatcher;
function registerWatcher() {
kendoWidgetWatcher = scope.$on("kendoWidgetCreated", refreshKendoWidgets);
}
function refreshKendoWidgets(ev, widget) {
var ht = widget.getSize().height;
var wt = widget.getSize().width;
var kendoGrid = widget.element.parent().find('.k-grid').data("kendoGrid");
if (kendoGrid != undefined) {
if (kendoWidgetWatcher) {
\t kendoWidgetWatcher(); // disable watch
}
kendoGrid.$angular_scope.compileTemplate(); // recompile the html tempate, then refresh kendo widget
kendoGrid.refresh();
registerWatcher(); // re-enable
}
}
感謝。我其實嘗試過,但觀察者不會觸發。我在Chrome工具中設置了一個調試點,但就好像手錶沒有註冊一樣。在我的語法中的東西? –
@bob你可以嘗試建議的更新 –
我添加了函數'refreshKendoWidgets',但如何禁用觀察者? –