簡體   English   中英

如何將動作從Ember組件發送到包裝它的View?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM