在Ember JS中,说我有一个如下定义的组件(HBS / JS)
parent.hbs
{{longclaw-sword attack=(action swing)}}
app/components/longclaw-sword.js
export default Ember.Component.extend({
click() {
this.attack();
}
});
使用调用关闭动作之间是否有区别
this.attack()
V / s this.attr.attack()
?
在哪种情况下使用“ attr”?它可以用于引用常规属性还是仅用于操作?
答案 0 :(得分:3)
attr是非官方弃用的afaik。
在即将发布的Ember,Octane版本中,属性将特别意味着仅HTML属性,而 args 将成为余烬之地。
将来/现在(如果您想使用辛烷值蓝图(https://github.com/ember-cli/ember-octane-blueprint),上面的内容将是这样:
@action swing() {
// whatever this does :)
}
<LongclawSword @attack={{this.swing}} />
// in longclaw-sword:
import Component from '@glimmer/component';
export default LongclawSword extends Component {
@action click() {
this.args.attack();
}
}
// or, if you don't need to wrap attack, you can do this inside longclow's template:
<button {{on 'click' this.args.attack}}>click</button>