我是新手。

我有带保存按钮和IFrame的文档A。

Iframe具有带角度控制器的文档B,其中已定义saveClick()

加载文档B后,我想将saveClick()功能分配给父文档按钮,以便当用户单击子控制器的“保存”按钮saveClick()时执行。

我曾经在JavaScript中这样做

parent.parent.saveClick = function () { ... }


按钮定义为

<button id='nobtnAdd' disabled onclick='return saveClick();'
        title="New Record (Alt+A)">Save
</button>


文档A现在不使用Angular JS,但是我可以根据需要使用它。

iframe将使用angular JS加载各种文档,控制器将在其中分配保存例程。

我如何使用angular实现此目的?
提前致谢。

最佳答案

您可以做的是使用angular应用程序的run()块将广播的事件包装到全局范围函数中。那么您的iframe父代码将是相同的

angular
   .module('myApp',[....])
   .run(function($window, $rootScope){
      $window.saveClick = function(){
         $rootScope.$broadcast('saveClick');
      };

   }).controller('someCtrl', function($scope){
      $scope.$on('saveClick', function(){
        alert('Iframe clicked')
      });
   });


我个人将使用postMessage API,以便避免使用全局范围。

09-30 16:32