我有一个嵌套指令,从嵌套指令我试图将一个函数传递给我的控制器......函数没有被触发。
这是我的主要指令html
<div class="panel panel-primary">
<div class="panel-heading" ng-click="collapse()">{{user.name}}</div>
<div class="panel-body" ng-hide="collapsed">
<address></address>
<div>
<h4>Friends:</h4>
<div ng-repeat="friend in user.friends">
{{friend}}
<remove-friend method="removeFri(friend)"></remove-friend>
</div>
<div ng-show="!!user.rank">
{{user.rank}}
</div>
<button ng-show="!user.rank" class="btn btn-primary" ng-click="knightme(user)">Click Me</button>
</div>
</div>
</div>
在上面的指令中,我有一个remove-friend
指令,它有一个名为method和function的属性,引用我的控制器函数removeFri()
在我的指令中,我这样引用它......
.directive("removeFriend", function(){
return {
restrict: 'E',
templateUrl: "removeFriend.html",
scope : {
method: "&"
},
controller: function($scope){
$scope.remove = function(){
$scope.method();
};
}
};
});
永远不会调用$ scope.method(),尝试发出警报($ scope.method())返回undefined。下面是点击x(删除图标)的plunker,我需要删除特定项目。
答案 0 :(得分:2)
userInfoCard
指令也有一个独立的范围,因为你没有从控制器传递它的功能,所以它是未定义的。您需要使用=
绑定将其添加到范围内(因为您还不知道参数,然后它将起作用:
HTML:
<user-info-card user="user" collapse="true" remove-fri="removeFri"></user-info-card>
指令:
scope: {
user: '=',
removeFri: '=',
initiallyCollapsed: '@collapse'
},