javascript - AngularJS 指令属性 : Replace deprecated - Equivalent?

标签 javascript angularjs

所以 AngularJs正在弃用 Replace指令的属性。 reference

上下文:

  .directive('myDir', function($compile) {
    return {
      restrict: 'E',
      template: '<div>{{title}}</div>'
    }
  });

这将输出:

<my-dir>
   <div> some title </div>
</my-dir>

所以,Replace将取代 <my-dir></my-dir>template .现在有什么等价物?还是只是将指令与 restrict: 'A' 一起使用? .

我创建了这个:

  .directive('myDir', function($compile) {
    return {
      restrict: 'E',
      template: '<div>{{title}}</div>',
      link: link
    };

    function link(scope, iElem, IAttr, ctrl, transcludeFn) {
      var parent = iElem.parent();
      var contents = iElem.html();

      iElem.remove();

      parent.append($compile(contents)(scope));
    }
  });

将输出:

<div> some title </div>

最佳答案

基本等同于 replace: true

app.directive('directive', function () {
  return {
    ...
    link: function postLink(scope, element, attrs) {
      element.replaceWith(element.contents());
    }
  };
});

但是,您可以很容易地发现副作用。绑定(bind)仍然存在,但指令中的属性不会转换为模板。

幸运的是,除非需要有条件的replace,否则通常没有理由这样做。正如您已经注意到的那样,replace 被认为不推荐用于 Angular 2(它不适合 Web 组件概念),但对于 1.x 完全没问题。

关于javascript - AngularJS 指令属性 : Replace deprecated - Equivalent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31311604/

相关文章:

javascript - Jquery Ajax IE后访问getElementsByName数组

C# 如何调用 MVC 操作并将结果分配给 js 变量

javascript - 在reactJs中选择/取消选择所有复选框

javascript - Ionic & Angular JS - 如何做一个多步骤表单?

angularjs - 将 ngTrueValue 和 ngFalseValue 设置为数字

javascript - Spring Rest 服务中的 Angular File Saver

Javascript 无法使用 obj.x 获取属性

javascript - 对混合 Angular/React 应用程序进行单元测试

javascript - 将 jQuery 依赖项传递给 Angular js Controller

javascript - 为什么要使用 ng-file-upload 上传服务