加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如何在编译内部指令之前修改被转换的内容?

发布时间:2020-12-17 10:20:22 所属栏目:安全 来源:网络整理
导读:我想要做的是,在插入DOM之前手动处理transclude并修改内容: return { restrict: 'E',transclude: true,template: 'HTML',replace: true,link: function(scope,element,attrs,ngModelCtrl,$transclude) { var caption = element.find('.caption'); $transclu
我想要做的是,在插入DOM之前手动处理transclude并修改内容:
return {
    restrict: 'E',transclude: true,template: '<HTML>',replace: true,link: function(scope,element,attrs,ngModelCtrl,$transclude) {

        var caption = element.find('.caption');

        $transclude(function(clone) {
            console.log(clone);
            clone.filter('li').addClass('ng-hide'); // this don't work
            clone.addClass('ng-hide'); // same this one
            clone.attr('ng-hide','true'); // same this one
            $compile(clone)(scope.$new()).appendTo(caption);
            caption.find('li').addClass('ng-hide'); // and this
        });
    }
}

在angular.js源代码中我找到了这个例子:

var templateElement = angular.element('<p>{{total}}</p>'),scope = ....;

  var clonedElement = $compile(templateElement)(scope,function(clonedElement,scope) {
    //attach the clone to DOM document at the right place
  });

  //now we have reference to the cloned DOM via `clonedElement`

但是当我添加clonedElement.appendTo(标题);在内部链接功能中,它只在ng-repeat内添加注释.

我需要这个,因为在这种情况下我需要隐藏所有元素

<dropdown>
  <li ng-repeat="item in items"><a>{{item.label}}</a></li>
</dropdown>

我需要在扩展ng-repeat之后在编译或DOM之前修改模板.之前会更好,因为我可以使用ng-hide指令而不是ng-hide类添加逻辑.

jcubic.您不必使用$compile来完成您要执行的操作.

您可以过滤已转换的元素“clone”并将css类添加到已过滤的节点,但之后您必须将修改后的克隆附加到模板(它由链接函数的“element”属性标识).

element.append(clone)

我为你创建了这个jsfiddle.

如果你还有其他问题,请为你的案例创建一个jsfiddle.它会更好地回答Thx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读