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',但如何禁用观察者? –