AngularJS指令属性:替代已弃用的-等效?
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替换
我创建了以下内容:
.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
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版本中仍然可以使用。
AngularJS Directive property: Replace deprecated - Equivalent?
在 AngularJS 的指令属性中,replace
被弃用,但文档似乎已经过时,replace
并没有被删除。
问题的原因:
根据给出的链接,可以看到一个 GitHub 提交的评论,该评论指出文档中的指令属性 replace
被弃用,但实际上并没有被删除。这导致开发者在使用 replace
属性时可能会遇到问题。
解决方法:
虽然文档中的指令属性 replace
被弃用,但是没有被删除,所以可以继续使用。然而,由于它被弃用了,建议开发者使用新的替代属性 ng-include
来代替 replace
。这个属性允许将一个外部的 HTML 文件作为指令的模板,从而实现类似于 replace
的功能。
尽管 AngularJS 文档中的指令属性 replace
被弃用,但实际上并没有被删除。开发者仍然可以继续使用 replace
,但建议使用新的替代属性 ng-include
来代替。这样可以避免潜在的问题,并保持代码的兼容性。