Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 替换为true时合并ngClass属性_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript 替换为true时合并ngClass属性

Javascript 替换为true时合并ngClass属性,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,这是我的指令,它在指令定义中设置了replace:true <my-custom-tag> </my-custom-tag> 因此,编译模板时出现语法错误。有没有办法合并这些对象 ,查看浏览器控制台中的错误消息并检查元素以检查数据ng类属性我看到有人在谈论这一点 在触发链接函数之前,可以使用compile修改表达式 angular.module('directive',[]).directive('myCustomTag',function(){ 返回{ 模板:“我的自

这是我的指令,它在指令定义中设置了
replace:true

<my-custom-tag>
</my-custom-tag>
因此,编译模板时出现语法错误。有没有办法合并这些对象

,查看浏览器控制台中的错误消息并检查元素以检查
数据ng类
属性

我看到有人在谈论这一点

在触发链接函数之前,可以使用
compile
修改表达式

angular.module('directive',[]).directive('myCustomTag',function(){
返回{
模板:“我的自定义标签”,
限制:'E',
替换:正确,
编译:函数编译(tElement、tAttrs){
tAttrs.ngClass=tAttrs.ngClass.replace(/}\s*{/g',,');
返回功能(范围、IELENT、iAttrs){
scope.whenfo=函数(){
返回true;
};
};
}
};
});

你能提供一个JSFIDLE吗?更新了这个问题
<div data-ng-class="{'class1': condition1, 'class2': condition2}">
</div>
<my-custom-tag data-ng-class="{'class3': condition3}"></my-custom-tag>
<div data-ng-class="{'class3': condition3} {'class1': condition1, 'class2': condition2}"></div>
angular.module('directive', []).directive('myCustomTag', function() {
  return {
    template: "<div data-ng-class=\"{'foo': whenFoo()}\">My Custom Tag</div>",
    restrict: 'E',
    replace: true,
    compile: function compile(tElement, tAttrs) {

      tAttrs.ngClass = tAttrs.ngClass.replace(/}\s*{/g, ', ');

      return function (scope, iElement, iAttrs) {
        scope.whenFoo = function() {
          return true;
        };

      };
    }
  };
});