Angularjs 指令上的多个ng类属性

Angularjs 指令上的多个ng类属性,angularjs,directive,ng-class,Angularjs,Directive,Ng Class,在script.js中,我有一个指令super。此指令有一个模板 template: '<div class="super" ng-class="{dirClass: foo}"></div>' 这显然是失败的。我希望它能自动合并。。没有 我想我想要达到的目标是很清楚的,但是我该如何去做呢?你可以这样做: js: angular.module('app',[]) .controller('myCtrl',函数($scope,$interval){ $scope.bar=

script.js
中,我有一个指令
super
。此指令有一个模板

template: '<div class="super" ng-class="{dirClass: foo}"></div>'
这显然是失败的。我希望它能自动合并。。没有


我想我想要达到的目标是很清楚的,但是我该如何去做呢?

你可以这样做:

js:

angular.module('app',[])
.controller('myCtrl',函数($scope,$interval){
$scope.bar=false;
$interval(函数(){
$scope.bar=!$scope.bar;
}, 500);
})
.指令('super',函数(){
返回{
限制:“EA”,
模板:“”,
范围:{
foo:“=”
},
替换:正确
};
});
HTML:

 <super foo="bar"></super>


angular仅连接属性,它不会触及属性。我看到了问题所在。你应该在github上开一张票。这应该会合并它。我认为github中已经有多个与此相关的问题。这就是为什么他们决定弃用
replace:
标志的原因,请参阅:进行长时间的讨论。@runTarm dam。。似乎我半年前决定在指令中使用
replace:true
以避免DOM中的自定义元素是一个错误。。嗯,事后诸葛亮总是20/20@是的,我也有同感。我希望他们会改变主意或提供任何实用的替代方案。我需要的是在视图中的指令中添加另一层
ng类
,这显然是不可能的。。“是的,@WillB,没错,但您可以将要求的值传递给指令,并在指令内设置类。我并不是真的在跟踪您。”。。你是什么意思?@WillB为什么你想再增加一层ng课程。只需将值传递给指令,并在指令内部设置css类
angular.module('app', [])
  .controller('myCtrl', function ($scope, $interval) {
    $scope.bar = false;

    $interval(function () {
      $scope.bar = !$scope.bar;
    }, 500);
  })

  .directive('super', function () {
    return {
      restrict: 'EA',
      template: '<div class="super" ng-class="{dirClass: foo , viewClass: !foo}" ></div>',
      scope: {
        foo: '='
      },
      replace: true
    };
  });
 <super foo="bar"></super>