如何根据授权从angularjs中的输入更改为标签

时间:2014-07-23 22:01:32

标签: angularjs

我有一个带有一些输入字段的现有应用程序。现在我需要根据用户授权将输入更改为标签。例如,如果用户具有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>

执行此操作后,模型正确绑定。但不是其他价值观,如类,类型等......

1 个答案:

答案 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);  
        }
    };
});