Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取在Emberjs中单击的元素的值_Javascript_Jquery_Ember.js - Fatal编程技术网

Javascript 获取在Emberjs中单击的元素的值

Javascript 获取在Emberjs中单击的元素的值,javascript,jquery,ember.js,Javascript,Jquery,Ember.js,我有一系列的标签,当用户点击它们时,我想从中检索文本。我认为jquery在Emberjs中是可行的: $(this).attr('text'); 但是,这不适用于余烬。我的组件视图如下所示: <ul class="list-inline"> {{#each model as |model|}} <li {{action "sendToInput"}} class="label label-default">{{model.name}}</li>

我有一系列的标签,当用户点击它们时,我想从中检索文本。我认为jquery在Emberjs中是可行的:

$(this).attr('text');
但是,这不适用于余烬。我的组件视图如下所示:

<ul class="list-inline">
  {{#each model as |model|}}
    <li {{action "sendToInput"}} class="label label-default">{{model.name}}</li>
  {{/each}}
</ul>
我也尝试过:

this.innerHTML;
$(this).text();
this.get('text');
$(this).val();
我还打开了控制台,仔细研究了一下,似乎找不到他们在哪里存储单击的元素

文档中没有提到这一点,我在Github for ember cli上也找不到任何问题


谢谢

常见的方法是将模型名称作为操作参数传递,如下所示:

<ul class="list-inline">
  {{#each model as |model|}}
    <li {{action "sendToInput" model.name}} class="label label-default">{{model.name}}</li>
  {{/each}}
</ul>
但是,如果您仍然需要访问确切元素的html,还有另一种解决方法:

export default Ember.Component.extend({

    didInsertElement () {
        this.$().on('click', '.label', function (event) {
            $(this).text();
        })
    }

});

您需要将值与操作一起发送。看,就是这样。这很有道理。仍然掌握着余烬的窍门
actions: {
  sendToInput(name) {
    // do something with name
  }
}
export default Ember.Component.extend({

    didInsertElement () {
        this.$().on('click', '.label', function (event) {
            $(this).text();
        })
    }

});