我有一个带有一些输入字段的现有应用程序。现在我需要根据用户授权将输入更改为标签。例如,如果用户具有ADMIN角色,我需要将其显示为输入本身,如果不是,我需要显示为标签。 我知道可以使用ng-switch或ng-if来完成,在这种情况下,我需要在所有字段中进行更改。我正在寻找的是一个具有最小变化的解决方案,比如声明一个指令并将其添加到所有输入字段。在运行时,我可以从Service获得用户角色。
有没有解决方法呢?可能是http拦截器。
请帮忙。
我在下面声明了一个指令,
alphaModule.directive('alphaField', function() {
return {
restrict : 'E',
template : '<span >{{ model }}</span>'
+ '<input type="type" class="alphaClass" ng-model="model" $scope.required minlength="minlength"/>',
scope : {
model : '=model',
type: '=type',
alphaClass: '&alphaclass',
minlength: '=minlength',
required: '=required'
},
controller : function($scope) {}
};
});
然后在页面中,
<alpha-field model="event.description" type="text" alphaclass="form-control" minlength="5" required="required" ></alpha-field>
执行此操作后,模型正确绑定。但不是其他价值观,如类,类型等......
答案 0 :(得分:1)
尝试...
alphaModule.directive('alphaField', function() {
return {
restrict : 'E',
template : '<span >{{ model }}</span>'
+ '<input type="{{type}}" class="{{alphaClass}}" ng-model="model" $scope.required minlength="{{minlength}}"/>',
scope : {
model : '=model',
type: '@',
alphaClass: '@',
minlength: '@',
required: '@'
},
link: function(scope, elm, attr) {
console.log(scope.type, scope.alphaClass, scope.minlength, scope.required);
}
};
});