Javascript 动态编译HTML时广播事件不起作用

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

我开始在需要重构的项目上使用Angular,但我不能从头开始,所以现在我需要插入一些html,带有Angular属性,需要动态编译,如下所示:

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>