在Emberjs中点击了元素的值

时间:2015-09-26 01:07:51

标签: javascript jquery ember.js

我有一系列标签,我想从用户点击它们时检索文本。我认为在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。

感谢。

1 个答案:

答案 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();
        })
    }

});