Javascript 角度、动态指令加载和事件管理
上下文 实际上,我正在开发一个应用程序,在这个应用程序中,我需要从一个控制器到一个视图(拖放系统)动态生成指令 它的工作原理如下: 指令 在控制器中,它看起来像: 从我的控制器,向我的指令发送一些信息,该指令应通过以下方式获取:Javascript 角度、动态指令加载和事件管理,javascript,angularjs,Javascript,Angularjs,上下文 实际上,我正在开发一个应用程序,在这个应用程序中,我需要从一个控制器到一个视图(拖放系统)动态生成指令 它的工作原理如下: 指令 在控制器中,它看起来像: 从我的控制器,向我的指令发送一些信息,该指令应通过以下方式获取: $scope.$on('event',function(){console.log('yiihaaa');}) 似乎什么都没有发生 我需要显示日志 你能帮我吗 感谢您的帮助您是否尝试过此链接: 他们正在动态加载指令。正如@Grundy所说,这种方法可以适应您的需求。从
$scope.$on('event',function(){console.log('yiihaaa');})
似乎什么都没有发生
我需要显示日志
你能帮我吗
感谢您的帮助您是否尝试过此链接: 他们正在动态加载指令。正如@Grundy所说,这种方法可以适应您的需求。从$rootScope使用$broadcast和$on 别忘了毁掉它
$rootScope.$on('$destroy', function () {
subscription();
});
美元的广播就是这样
$rootScope.$broadcast("myEvent", {});
ngRepeate
创建自己的隔离作用域,指令链接函数中的作用域就是这个隔离作用域
当你这样做的时候
通过作用域层次结构向上分派事件名称,通知已注册的$rootScope.scope侦听器
用于将事件发送到您需要使用的子作用域
所以要解决你的问题,你至少有两种方法
1) 使用$broadcast而不是$emit
//代码在这里
角度.module('app',[])
.controller('ctrl',函数($scope){
$scope.listModules=[
{libelle:“利用者连接”,模板:,拖动:true}
];
$scope.recherchersts=function(){console.log('reload');$scope.$broadcast('reload');};
});
角度。模块('app')
.directive('dynamic',function($compile){
返回{
限制:“A”,
替换:正确,
链接:功能(范围、元素、属性){
作用域.$watch(attrs.dynamic,函数(html){
ele.html(html);
$compile(ele.contents())(范围);
});
作用域。$on('reload',function(){console.log('yiihaaa');})
}
};
});代码>
样品
指令已加载
您如何尝试发射
ngRepeat
创建隔离作用域,因此可能$broadcast
是您在控制器中的函数在ng单击时需要的:$scope.recherstats=function(){$scope.$emit('reload');};你能提供JSFIDLE或PLUNK吗?它实际上是一个复杂的函数。我试图使它变得简单在你的OP中没有使用ng点击,因此不清楚所有的$rootScope
如何工作不需要:-)简单的作用域就足够了
$scope.$emit('event');
$scope.$on('event',function(){console.log('yiihaaa');})
var subscription = $rootScope.$on("myEvent", function() {
console.log("yiihao");
});
$rootScope.$on('$destroy', function () {
subscription();
});
$rootScope.$broadcast("myEvent", {});
$scope.rechercherStats = function () { $scope.$broadcast('reload'); };