在迄今为止的所有余烬文档中,它们都是指组件的属性。"例如,对this.get('some_property')
和this.set('some_property', 'some_value')
的调用称为获取/设置组件的属性。
从版本2.2.0,2.3.0中的最新文档开始,特别是在有关组件生命周期钩子的文档中,它们现在使用术语attributes
。这似乎没有在API中记录,似乎是与properties
重叠的概念。
这两者之间是否存在有效差异?
答案 0 :(得分:3)
目前,区别仅仅在于术语,但它是以一种为用户准备微光(尖括号)组件的方式引入的。
属性是组件的内部属性,属性是通过绑定传递给组件的属性。假设您有以下内容:
// application.hbs
{{my-component foo="foo"}}
// my-component.js
export default Ember.Component.extend({
bar: "bar"
});
在此示例中,foo
是一个属性(通过绑定传递到组件中),bar
是一个属性(在内部定义)。但是,在经典组件中,属性查找是代理的,这意味着当您在组件中执行this.get('foo')
时,您将获得属性的值"foo"
。
在尚未提供的微光器组件中,这是未来发言,您需要在attrs
哈希中查找属性,因此您必须执行{this.get('attrs.foo')
之类的操作1}}获取值"foo"
。
我希望我不要再混淆你了!
答案 1 :(得分:0)
属性为角支架组件和只读装订的未来做好准备,但它们也可以改善您今天的生活!使用属性,您的操作可以具有返回值:
// application.hbs
{{my-component save=(action "someActionWhichReturns")}}
// my-component.js
export default Ember.Component.extend({
actions: {
save(user) {
// sendAction eats the return value
this.sendAction('save', user);
// I can get the return value this way
var result = this.attrs.save(user);
}
}
});
您可以在博客上阅读有关2.x过渡的更多信息: http://emberjs.com/blog/2015/05/10/run-up-to-two-oh.html