javascript - 自定义指令内的条件 ngClass

标签 javascript angularjs

我正在尝试了解隔离范围。

可以说,我有一个简单的指令:

HTML:

<my-directive options = "data"></my-directive>

JS:

angular.module('myapp.directive').
    directive('myDirective', function() {
     return {
        template: '<a href = "{{href}}" class = "class"></a>',
         restrict: 'E',
         replace: 'true',
         scope: {
           options = "=options"
         },
         link: function(scope, element, attrs) {
            scope.$watch('options', function(data) {
              scope.class = data.class;
              scope.href = data.href;
            }
         }

    }

它有效。 现在我想添加 ng-class:

<my-directive ng-class = "{'enabled': data.status == 'enabled'}" options = "data"></my-directive>

我尝试过:

scope : {
   options: '=options',
   ngClass: "="
}

scope.$watch("ngClass", function(value) {
   scope.class += value;
}

它将“{'enabled':data.status == 'enabled'}”放入类中。我是否需要编译它,或者如何在每次更新数据时将其设置为 eval ng 类?

在浏览器上我看到

<a href = "{{href}}" class = "class "{'enabled': data.status == 'enabled'}""></a>

我想看看

<a href = "{{href}}" class = "class enabled"></a>

最佳答案

使用模板函数将 ng-class 从 myDirective 传递到您的模板:

<my-directive ng-class = "{'enabled': data.status == 'enabled'}" options = "data">
</my-directive>

指令

angular.module('myapp.directive').
directive('myDirective', function() {
 return {
    template: function(element, attr) { 
         return '<a href = "{{href}}" class = "class" ng-class="' + attr.ngClass + '"></a>'
     },
     restrict: 'E',
     replace: 'true',
     scope: {
       options = "=options"
     },
     link: function(scope, element, attrs) {
        scope.$watch('options', function(data) {
          scope.class = data.class;
          scope.href = data.href;
        }
     }

}

关于javascript - 自定义指令内的条件 ngClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25322501/

相关文章:

javascript - Select2 框包含不需要的文本

javascript - 每个,attr,还是这个?

javascript - AngularJS : How to call methods from "Different Controllers" via single <ul> element?

logging - 需要引用$log.log调用行号

javascript - 如何在 reactjs 中设置下拉列表的选定索引?

javascript - 在 div 中显示多维数组时出现问题

javascript - 怎样才能做到不能点击 "GO"提交表单(iPhone),而必须点击 "submit"按钮?

javascript - Cordova 混合应用程序设计 - Controller

javascript - Ng-repeat 根据所选单选答案隐藏单选按钮

angularjs - 然后将数据返回到 Controller Angular