[英]How to send an action from a Ember component to a View that wraps it?
我知道sendAction
會將動作從組件發送到與放置該模板的模板關聯的控制器,但是在我的情況下,該組件並未直接放置在路由模板內。 相反,我的組件位於視圖的模板內:
<script type="text/x-handlebars" data-template-name="displayTemplate">
<h3>View</h3>
...
{{componentA}}
</script>
該組件具有與其關聯的控制器:
App.ComponentAController = Ember.Controller.extend({
...
}
但是包裝視圖不是,它只是一個視圖:
App.DisplayView = Ember.View.extend({
templateName: 'displayTemplate',
actions: {
updateData: function(data) {
/* how can I get this triggered when an action happens in the embedded componentA? I'd like to
process the data object here so I can update the wrapping view accordingly. */
}
}
...
}
如果我在組件的控制器中實現該動作,則當我從組件內部執行sendAction('updateData', data)
時,不會觸發該動作。 如果我在DisplayView
實現它,則也不會觸發它。
所以問題是:當在componentA
觸發動作時,如何將該動作發送到視圖DisplayView
進行處理?
更具體地說,我嘗試將上下文數據發送到該視圖,以便可以根據嵌入式組件上選擇的內容對其進行更新。 因此,如果還有另一種傳達此數據的方式也可行。 我選擇動作只是因為它似乎合適,但也許不合適。
更新:實際情況
實際的代碼是指網格視圖,在其模板中具有分頁組件。 當用戶切換到新頁面時,分頁組件向服務器發送針對所選頁面的請求。
一旦返回數據,則需要讓包裝視圖(其中包含網格)知道新數據可用。 當用戶單擊頁碼時,在分頁組件中處理該操作,這就是為什么我從那里進行數據調用的原因。 如果我需要對其他內容進行分頁,則我想重用此組件,所以我不想使分頁成為網格視圖的一部分。
通常,您傳遞target
,但是組件上下文的屬性名稱為targetObject
。
{{foo-bar action='actionName' targetObject=view}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.