AngularJS:如何创建一个连接现有指令的新指令?
我想改进我目前的解决方案 我有一个使用AngularJS:如何创建一个连接现有指令的新指令?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我想改进我目前的解决方案 我有一个使用和标签的大菜单。我只需要向用户显示他们有权访问的标记 我使用两个指令解决了这个问题:ng init和ng show ... <li ng-init="ok=hasPemission('item1')" ng-show="ok"> <a href="#/Item1">Item 1</a> </li> ... 因此,我的html更改为: ... <li my-permission-show="item1
- 和
- 标签的大菜单。我只需要向用户显示他们有权访问的
- 标记
我使用两个指令解决了这个问题:ng init和ng show
因此,我的html更改为:... <li ng-init="ok=hasPemission('item1')" ng-show="ok"> <a href="#/Item1">Item 1</a> </li> ...
... <li my-permission-show="item1"> <a href="#/Item1">Item 1</a> </li> <li my-permission-show="item2"> <a href="#/Item2">Item 2</a> </li> ...
为什么控制器上没有一个名为hasPermission的属性,初始化为false。当您的承诺得到解决时,可以更新此值。那么您所需要的就是ng show='hasPermission'-ng init不是必需的。@GruffBunny,我有多个菜单项。每个都有自己的“resourceName”值(“item1”、“item2”)。为此,我需要在MenuController上解析一个包含所有resourceName的大数组。我更喜欢定义所有resourceName和li标签,而不是controller.imho模型是angular应用程序最重要的部分。一旦你有了模型,angular就更容易使用了。@grufbunny,首先感谢你的评论。我需要检查我是否理解您的第一个建议解决方案:我不能只使用ng show='hasPermission',因为我有很多权限要检查。因此,我需要使用ng show=“hasPermission('NameOfPermission')”或ng show=“hasPermission['NameOfPermission']”或ng show=“hasPermission.NameOfPermission”。好吗?正确-如果您有任何建议,例如hasPermissionTo.ViewAccounts、hasPermissionTo.EditAccounts等,都会显得非常优雅。... <li my-permission-show="item1"> <a href="#/Item1">Item 1</a> </li> <li my-permission-show="item2"> <a href="#/Item2">Item 2</a> </li> ...
!!!NOT WORKING CODE!!! .directive('myPermissionShow',['AccessControl', function (AccessControl) { return { restrict:'A', replaceAttribute: true, /* this property does not exists... */ template: 'ng-init="val=hasPermission(user,resourceName)" ng-show="val"', scope: { resourceName: '@myPermissionShow' }, controller: function ($scope, $element) { $scope.hasPemission = AccessControl.hasPermission; $scope.user = AccessControl.getLoggedUser(); } } }]) !!!NOT WORKING CODE!!!