gpt4 book ai didi

javascript - 指令中未拾取 $broadcast

转载 作者:行者123 更新时间:2023-12-02 15:52:56 26 4
gpt4 key购买 nike

我有一个简单的服务/工厂:

angular.module('myapp').factory('User', ['$rootScope', function($rootScope) {
return {
hello: function() {
console.log('Sending root scope message');
$rootScope.$broadcast('saidhello', {greeting: 'hey'});
}
};
}]);

在我的 Controller 中,我只需调用 hello 方法:User.hello(),它会记录我的控制台消息。

我想在指令中选择这个,但它似乎不起作用......

angular.module('myapp').directive('user', ['User', function(User) {
return {
replace: true,
restrict: 'EA',
scope: true,
link: ['scope', 'element', 'attrs', function(scope, element, attrs) {

scope.$on('saidhello', function(event, data) {
console.log('User said ' + data.greeting);
});
}]
}
}]);

没有记录任何内容...我尝试将广播包装在超时中以确保指令已加载,但没有任何乐趣。还尝试了 $emit 而不是 $broadcast

我的 HTML 是这样的:

<body>
<div ng-controller="myController">
<!-- Used to execute service -->
</div>
<user></user>
</body>

最佳答案

链接应该是一个函数,不是吗?而不是数组,因为它的参数是静态的。

link: function(scope, element, attrs) {

scope.$on('saidhello', function(event, data) {
console.log('User said ' + data.greeting);
});

// say hello
User.hello();
}

http://plnkr.co/edit/Shj112rfu6dyTcUHPVfM?p=preview

关于javascript - 指令中未拾取 $broadcast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31752947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com