2015-09-26 32 views
2

我有一系列標籤,我想從用戶點擊它們時檢索文本。我認爲jquery可能在Emberjs可行:獲取在Emberjs中單擊的元素的值

$(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。

謝謝。

+2

您需要發送該值的操作。請參閱[Action Parameters](http://guides.emberjs.com/v1.10.0/templates/actions/)。 – steveax

+0

就是這樣。這很有道理。仍然得到Ember的掛鉤 – user3162553

回答

1

的常用方法是通過一個型號名稱作爲操作參數如下:

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

});