javascript - 为特定功能复制 ng-if
问题描述
我正在尝试为我们的 AngularJS 应用程序创建一个指令。它将像这样使用:
<div requires-permissions="['permission_1', ...]">
This should only show if the user has appropriate permissions.
</div>
它的功能很像ng-if
它会删除或替换元素。如果没有这个指令,我需要为每个这样的元素编写这个:
<div ng-if="ctrl.User.has_permissions(['permission_1', ...])">etc.</div>
并且每个控制器都需要对用户服务的引用。我已经查看了 ng-if 的代码,但我无法确定代码的正面或反面。
我很确定我可以使用 jqlite 的删除功能删除元素。以后怎么换?
解决方案
我已经为您的需求实现了类似的东西,它调用experimentIF
export function experimentIf(ngIfDirective, experimentsManager) {
const ngIf = ngIfDirective[0];
const NAME = 'experimentIf';
return {
restrict: ngIf.restrict,
priority: ngIf.priority + 1,
terminal: ngIf.terminal,
transclude: ngIf.transclude,
link: function ($scope, $element, $attr) {
const experimentName = $attr[NAME];
$attr.ngIf = function () {
return experimentsManager.isExperimentEnabled(experimentName);
};
ngIf.link.apply(ngIf, arguments);
}
};
}
基本上,它会在需要时重用 ng-if 的配置,并且只更改断言部分。就我而言,它是使用experimentsManager
服务。
当您注入ngIfDirective
.
推荐阅读
- jquery - Kendo 数据源模型设计
- php - 自定义 PHP/SQL CMS htaccess 规则
- sql - SQL Cross Join 获取日期范围内的所有日期
- r - 如何在R中列表的每个向量(不同长度)中附加第一个和最后一个元素,而不会使代码变慢?
- python-3.x - 在 Python 中使用循环将列表值传递给类
- ios - 在惰性变量中获取超级视图框架?(迅速)
- search - 二分查找最坏的情况是什么
- apache - .htaccess 重定向如果包含保留一些参数的字符串
- shell - 仅更改 bash 中字符之间出现的单个空格
- python - 使用带有矩形瓷砖的颜色条在相关矩阵中绘制数字范围 [matshow (matplotlib)]