我有一系列标签,我想从用户点击它们时检索文本。我认为在Emberjs中jquery可能是可行的:
$(this).attr('text');
然而,这与Ember不起作用。我的组件视图是:
<ul class="list-inline">
{{#each model as |model|}}
<li {{action "sendToInput"}} class="label label-default">{{model.name}}</li>
{{/each}}
</ul>
我想通过动作“sendToInput”检索该model.name值。
在我的组件js文件中,我尝试过:
actions: {
sendToInput() {
$(this.target).attr('text');
}
}
我也尝试过:
this.innerHTML;
$(this).text();
this.get('text');
$(this).val();
我还打开了控制台并挖掘了这个,似乎无法找到它们存储点击元素的位置。
文档没有提到这一点,我可以在Github上找到没有问题的ember-cli。
感谢。
答案 0 :(得分:2)
常见的方法是将模型名称作为动作参数传递,如下所示:
<ul class="list-inline">
{{#each model as |model|}}
<li {{action "sendToInput" model.name}} class="label label-default">{{model.name}}</li>
{{/each}}
</ul>
然后在动作中处理它:
actions: {
sendToInput(name) {
// do something with name
}
}
但如果你仍然需要访问确切元素的html,还有另一种解决方法:
export default Ember.Component.extend({
didInsertElement () {
this.$().on('click', '.label', function (event) {
$(this).text();
})
}
});