2017-06-22 60 views
2

我看到在有關如何在{{input}}幫助程序上操作語法的餘燼指南內發生衝突。我指的是key-presskey-up參數。簡單的Ember.js輸入語法

This section顯示它沒有括號這樣:

{{input value=firstName key-press="updateFirstName"}}

然而here(與代碼段標題爲「應用程序/模板/組件/列表filter.hbs」),但它確實使用括號作爲這樣:

{{input value=value key-up=(action 'handleFilterEntry') class="light" placeholder="Filter By City"}}


我不知道爲什麼API文檔LEAV Ë了括號,但例如把它們放入。任何瞭解讚賞

+1

我相當肯定這是因爲這是一個內置的事件,動作部分是隱含的,所以不需要它;它在第二個片段中是無關緊要的。 – Li357

回答

1

當您使用以下格式key-up=(action 'handleFilterEntry'),然後handleFilterEntry功能將與以下參數value,​​被調用。

同樣,

key-up='handleFilterEntry' ==>價值,jQueryEvent

keyUp=(action 'handleFilterEntry') ==>只有jQueryEvent

keyUp='handleFilterEntry' ==>慣於觸發事件 - 這是錯誤的。它像正常事件一樣,所以你需要提供函數而不是字符串。

Event-Name破折號,內部輸入助手,你會得到第一個參數的值,然後jQuery事件。如果它沒有破裂然後它的正常的事情,所以你會單獨獲得jQuery Event參數。

Sample twiddle這證明了這種行爲。

+0

你能解釋一下你的意思嗎?_你會在arguments_中收到什麼。你有任何例子或鏈接來更好地理解這一點。 – qarthandso

+0

謝謝,這樣做更有意義。你能否解釋一下'keyUp ='handleFilterEntry''可能工作。 – qarthandso

+0

'{{input' helper的設計方式是它會響應https://emberjs.com/api/classes/Ember.Component.html#toc_event-names中提到的所有事件,但事件名稱必須是dasherized。但對於正常的輸入元素,你不需要將事件名稱打散。你可以像這樣使用它''。 。在這種情況下,'keyUp ='handleFilterEntry''事件名稱'keyUp'由瀏覽器管理而不是由Ember管理,因此您需要分配函數而不是字符串。 – kumkanillam