我是新手。
我有带保存按钮和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,以便避免使用全局范围。