Angularjs:Modal中的JQuery UI指令导致了麻烦

时间:2013-06-06 06:48:15

标签: modal-dialog angularjs-directive angular-ui jquery-ui-timepicker

使用angular指令,我在angularjs项目中创建了一个自定义时间戳。不幸的是,时间戳在模态中使用时无法正常工作,请参阅:http://plnkr.co/edit/QvBHJyoA4O32y9cnsNzE

第一次打开模态时,一切正常。但是当关闭它(通过点击模态之外的某个地方)并再次打开它时,我会在错误控制台中看到这一点:

TypeError: Cannot read property 'timeFormat' of undefined
    at methods.setTime (https://dl.dropboxusercontent.com/u/1004639/stackoverflow/jquery.timepicker.js:222:81)
    at $.fn.timepicker (https://dl.dropboxusercontent.com/u/1004639/stackoverflow/jquery.timepicker.js:821:48)
    at ngModel.$render (http://run.plnkr.co/o2Sj3E7DaqcyasgA/app.js:26:23)
    at Object.<anonymous> (https://dl.dropboxusercontent.com/u/1004639/stackoverflow/angular.min.js:140:131)
    at Object.e.$digest (https://dl.dropboxusercontent.com/u/1004639/stackoverflow/angular.min.js:86:286)
    at Object.e.$apply (https://dl.dropboxusercontent.com/u/1004639/stackoverflow/angular.min.js:88:506)
    at HTMLButtonElement.<anonymous> (https://dl.dropboxusercontent.com/u/1004639/stackoverflow/angular.min.js:144:122)
    at HTMLButtonElement.x.event.dispatch (https://dl.dropboxusercontent.com/u/1004639/stackoverflow/jquery.min.js:5:9843)
    at HTMLButtonElement.y.handle (https://dl.dropboxusercontent.com/u/1004639/stackoverflow/jquery.min.js:5:6626) 

再次关闭并打开模态时,我在控制台中看到错误消息两次。

我认为问题与渲​​染回调有关(ngModel。$ render = ...)。似乎角度尝试渲染不再存在的东西。但我无法修复它。特别是因为该指令不知道它是否处于模态中。因此,缓存模态关闭事件没有意义。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 directive-element有一个$ destroy事件。调用此事件时,$ render函数可以用空函数覆盖:

element.bind("$destroy", function() {
    if (ngModel) {
        ngModel.$render = function() {};
    }
});

随着这个额外的代码剪断,我的示例就像一个魅力。