我使用 angular-strap 和 modal 服务。我尝试在使用参数 onHide 关闭模式时调用一个函数。

var _modal = $modal({
            templateUrl: "app/pages/fee/modals/historic/fee.historic.html",
            controller: "HistoricController",
            controllerAs: "vm",
            keyboard: true,
            show: false,
            onHide: function() {
                console.log("Close !");
            },
            onShow: function() {
                console.log("Open !");
            }
        });
_modal.$promise.then(_modal.show);

但是当我关闭我的模态时没有任何 react ,我在控制台中看不到任何日志(关闭或打开)。
在此先感谢任何能给我一些想法的人!

最佳答案

经过一番调查,发现这是一个有趣的案例。

看来 $modal 在分布式版本中不同步!我的意思是当 angular-strap 被 bower 或 npm 获取时。

  • 看看你自己的 angular-strap 本地版本,即使在最新版本 2.3.8 中你也找不到对 onShowonHide
  • 的引用
  • 看一下github repo上的源码 -> https://github.com/mgcrea/angular-strap/blob/master/src/modal/modal.js

  • 这里 onShowonHide 实际上被触发了!因此,在分布式版本中,modal 似乎与 angular-strap 的其余部分不同步。

    错误的不是文档(我实际上已经相信了很长时间)而是我们下载的源不是最新的!

    因此,如果您想要支持 onShow 等,您必须将 github 存储库中的最新 /modal 合并到您的本地 angular-strap 中。就我个人而言,我不会这样做,因为它会在升级时引起各种问题等等 - 我坚持我原来的答案,但现在至少我知道为什么我必须这样做。

    根据我的经验,onShow 等选项的使用是无用的。我在 modal.show/modal.hide 事件上使用处理程序,这些事件总是被广播。如果您有一个多模态环境(模态超过模态),请“标记”模态以避免混淆。

    var _modal = $modal({
      templateUrl: "app/pages/fee/modals/historic/fee.historic.html",
      controller: "HistoricController",
      controllerAs: "vm",
      keyboard: true,
      show: false,
      tag: 'myModal'
    }
    
    $scope.$on('modal.show', function(e, target) {
      if (target.$options.tag == 'myModal') {
        //do stuff here
      }
    })
    $scope.$on('modal.hide', function(e, target) {
      if (target.$options.tag == 'myModal') {
        //do stuff here
      }
    })
    

    关于javascript - 如何使用angular-strap的模态的onHide选项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37464620/

    10-10 02:47