我有一个看起来像这样的指令
<list source="userList" avatar-url="avatarPath" search="search"></list>
并且定义了这个:
.directive('list', function($rootScope) {
return {
restrict: 'E',
transclude: true,
templateUrl: 'templates/list.html',
scope: {
source:'=',
search:'=',
avatarUrl:'='
}
}
})
有没有办法在这个指令smth中指定我想要使用的控制器:
<list source="userList" avatar-url="avatarPath" search="search" controller="listCtrl"></list>
<list source="userList" avatar-url="avatarPath" search="search" controller="adminListCtrl"></list>
答案 0 :(得分:0)
据我了解,您可以在每个控制器中调用两个不同的函数。
我会这样做:
使用ng-controller =&#34; yourControllerName&#34;制作div并在里面使用指令 并只传递函数名称
类似的东西:
<div ng-controller="listCtrl">
<list source="userList" avatar-url="avatarPath" search="search" function-to-call="someFunctionNameInUserList()"></list>
</div>
<div ng-controller="adminListCtrl">
<list source="userList" avatar-url="avatarPath" search="search" function-to-call="someFunctionNameInAdminListCtrl()"></list>
</div>
在指令中添加functionToCall:
scope: {
source:'=',
search:'=',
avatarUrl:'=',
functionToCall : '='
}
现在在ng-click或ng-submit或任何你需要的地方使用指令模板中的functionToCall()
希望你明白我的观点。在我们的项目中工作正常。