我正在努力提高1.5角组件的速度。我一直在关注todd Motto的视频,以开始了解组件以及angular的文档https://docs.angularjs.org/guide/component。
在这一点上,似乎组件正在取代使用控制器的指令,但是在我们的1.5代码中,我们仍将使用指令进行dom操作。
组件控制器内部的$ element,$ attrs的用途是什么?这些似乎可用于操纵。这是文档的链接。我知道他们没有使用$ element,但这是我正在阅读的示例。http://plnkr.co/edit/Ycjh1mb2IUuUAK4arUxe?p=preview
但是在这样的代码中...
angular
.module('app', [])
.component('parentComponent', {
transclude: true,
template: `
<div ng-transclude></div>
`,
controller: function () {
this.foo = function () {
return 'Foo from parent!';
};
this.statement = function() {
return "Little comes from this code";
}
}
})
.component('childComponent', {
require: {
parent: '^parentComponent'
},
controller: function () {
this.$onInit = function () {
this.state = this.parent.foo();
this.notice = this.parent.statement();
};
},
template: `
<div>
Component! {{ $ctrl.state }}
More component {{$ctrl.notice}}
</div>
`
})
如果我们不操纵dom,$ element的用途是什么?
这是个好问题。我对此有一个简单的答案。
它们发生在组件中只是因为Component是指令周围的语法糖。
在添加有角度的组件之前,我对指令使用了某种组件语法,这就像一个约定,在我们的项目中,我们有两种指令,一种负责DOM操作,第二种是带有模板的指令,这些模板不应进行操作DOM。添加组件后,我们只不过更改了名称。
因此Component
,无非就是创建为新实体的简单指令:
我认为您可以在角度源中找到更多答案,但我建议您不要混合使用这些实体,并且如果需要在组件内部操作DOM,只需在内部使用指令即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句