Javascript 动态编译HTML时广播事件不起作用
我开始在需要重构的项目上使用Angular,但我不能从头开始,所以现在我需要插入一些html,带有Angular属性,需要动态编译,如下所示:Javascript 动态编译HTML时广播事件不起作用,javascript,angularjs,Javascript,Angularjs,我开始在需要重构的项目上使用Angular,但我不能从头开始,所以现在我需要插入一些html,带有Angular属性,需要动态编译,如下所示: var html = "<div ng-controller='MyController'><p ng-click="raiseEvent()">Click Me</p></div>"; var $injector = angular.injector(['ng', 'MyProject']); $inje
var html = "<div ng-controller='MyController'><p ng-click="raiseEvent()">Click Me</p></div>";
var $injector = angular.injector(['ng', 'MyProject']);
$injector.invoke(function($rootScope, $compile) {
$('body').append($compile(html)($rootScope));
});
我的意图是当我单击ClikMe为MyOtherController广播消息时。当我按下Click Me时调用raiseEvent,但MyOtherController中的侦听器未捕获该事件。Fuhermore,如果我在HTML文件上使用该HTML,我不会得到这个错误,这使我相信问题出在$compile方法上。有什么建议吗 您没有在视图上使用MyOtherController
var myApp = angular.module('myApp',[]);
function MyController($scope, $rootScope) {
$scope.raiseEvent = function(){
$rootScope.$broadcast('handleBroadcast');
}
}
function MyOtherController($scope) {
$scope.$on('handleBroadcast', function (event, data) {
alert("I've called!");
});
}
在你看来:
<div ng-controller="MyController">
<p ng-click="raiseEvent()">Click Me</p>
</div>
<div ng-controller="MyOtherController">
</div>
这应该行得通
我已经为你创造了
另外,我建议您在此处对角度事件进行调查:您在哪里使用MyOtherController?MyOtherController通常使用,例如:您可以在初始化MyOtherController的位置添加代码吗?我刚刚编辑了我的回答,我正在使用MyOtherController,正如您在回答中所说。请检查我的comment@JoaoAlmeida在视图上使用此控制器的位置,是否可以提供代码?或者,如果您使用代码创建JSFIDLE会更好。
<div ng-controller="MyController">
<p ng-click="raiseEvent()">Click Me</p>
</div>
<div ng-controller="MyOtherController">
</div>