AngularJS指令属性:替代已弃用的-等效?

17 浏览
0 Comments

AngularJS指令属性:替代已弃用的-等效?

所以,AngularJS正在弃用指令的Replace属性。参考链接:https://docs.angularjs.org/api/ng/service/$compile#-replace-deprecated-will-be-removed-in-next-major-release-i-e-v2-0-

上下文:

.directive('myDir', function($compile) {

return {

restrict: 'E',

template: '{{title}}'

}

});

这将输出:

some title

因此,Replace将用template替换。现在有什么等效的替代方法吗?还是只需使用restrict: 'A'的指令即可?

我创建了以下内容:

.directive('myDir', function($compile) {

return {

restrict: 'E',

template: '{{title}}',

link: link

};

function link(scope, iElem, IAttr, ctrl, transcludeFn) {

var parent = iElem.parent();

var contents = iElem.html();

iElem.remove();

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

}

});

这将输出:

some title

0
0 Comments

AngularJS指令属性:Replace被弃用 - 等效解决方法?

在AngularJS中,指令属性replace被弃用。那么为什么会出现这个问题,以及如何解决呢?

基本上,替代replace:true的方法是使用以下代码:

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

然而,这种方法有一些明显的副作用。绑定仍然存在,但是指令的属性不会被转换成模板。

幸运的是,除非需要条件替换,通常情况下不会出现这种情况。正如你已经注意到的那样,replace在Angular 2中被认为是被弃用的(它不符合Web组件的概念),但在1.x版本中仍然可以使用。

0
0 Comments

AngularJS Directive property: Replace deprecated - Equivalent?

在 AngularJS 的指令属性中,replace 被弃用,但文档似乎已经过时,replace 并没有被删除。

问题的原因:

根据给出的链接,可以看到一个 GitHub 提交的评论,该评论指出文档中的指令属性 replace 被弃用,但实际上并没有被删除。这导致开发者在使用 replace 属性时可能会遇到问题。

解决方法:

虽然文档中的指令属性 replace 被弃用,但是没有被删除,所以可以继续使用。然而,由于它被弃用了,建议开发者使用新的替代属性 ng-include 来代替 replace。这个属性允许将一个外部的 HTML 文件作为指令的模板,从而实现类似于 replace 的功能。

尽管 AngularJS 文档中的指令属性 replace 被弃用,但实际上并没有被删除。开发者仍然可以继续使用 replace,但建议使用新的替代属性 ng-include 来代替。这样可以避免潜在的问题,并保持代码的兼容性。

0