我正在尝试在ng-repeat内部获得一个指令来工作..当它在HTML中被硬编码但是在切换到ng-repeat之后它工作的某些方面停止工作.
<div ng-repeat="section in filterSections" filter-tray>
Test {{section.label}}
</div>
Run Code Online (Sandbox Code Playgroud)
我有一个带有控制器的模块,可以发出事件:
controller: function($scope, $element) {
this.activateTray = function(trayID) {
$scope.$emit('filterTray::show', {
tray: trayID
});
};
};
Run Code Online (Sandbox Code Playgroud)
我在页面上有一个指令 - 它应该从控制器接收事件.由于切换到使用ng-repeat接收事件已停止工作.它仍然初始化,它只是不听事件.
.directive('filterTray', function() {
return {
restrict: 'A',
require: '^filter',
link: function($scope, $element, attrs, filterNavController) {
console.log('this debug statement works');
$scope.$on('filterTray::show', function(e, data) {
console.log('this debug statement never runs');
});
}
};
})
Run Code Online (Sandbox Code Playgroud)
由于添加重复,$ scope变量受到影响?也许$ on不再听正确的事了吗?任何想法/提示将不胜感激!
是 - ngRepeat创建新范围.
不确定事件是否是正确的设计选择,但如果是,则使用broadcast而不是发射,事件将达到指令的范围.
controller: function($scope, $element) {
this.activateTray = function(trayID) {
$scope.$broadcast('filterTray::show', {
tray: trayID
});
};
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
430 次 |
| 最近记录: |