【发布时间】:2014-07-13 03:20:22
【问题描述】:
我有一个指令:
app.directive('eventView', function () {
return {
restrict: 'E',
replace:true,
templateUrl: 'partials/EventView.html',
controller: 'eventController',
link: function(scope, element){
scope.$on("$destroy",function() {
element.remove();
});
}
}
});
指令的控制器:
app.controller('eventController', function($scope, $rootScope){
$scope.removeEvent = function (){
$scope.$broadcast("$destroy")
}
});
在根作用域中有多个相同指令的实例。每个指令都是一个 div,其中有一个删除按钮,该按钮绑定到控制器定义中的 removeEvent 方法。
问题是,当在其中一个 div(来自 eventView 指令)中按下删除按钮时,所有 div 都将被删除。我只希望删除正在广播销毁的当前指令。我知道它是因为我正在广播 $scope.$broadcast("$destroy") 但我怎样才能只删除当前范围,是否有仅适用于当前范围的预定义方法
【问题讨论】:
-
这些 div 是通过 ng_repeat 呈现还是有一些唯一标识符??
-
您应该调查孤立的范围。您的指令需要知道它所指的范围。这是一篇好文章:sitepoint.com/practical-guide-angularjs-directives
-
@HarishR,它不是 ng_repeat 的一部分
标签: angularjs angularjs-directive angularjs-scope