簡體   English   中英

將多個存儲數據傳遞到Ember組件

[英]Passing multiple store-data to Ember Component

我正在嘗試將第二個模型傳遞給組件。 我有幾本按類別排序的書。 類別是由“多選框”選擇的,我需要將類別(存儲在我的數據庫中)傳遞給組件。 我不需要更改類別,我只需要一個數組。 如果我不想將商店注入組件中,我在哪里以及如何請求它們並將它們傳遞下去? (沒有辦法建立多對多關系,這些書只有類別的字符串數組)。

現在,我正在嘗試這樣做:

books / route.js

model() {
  this.store.findAll('book');
}

afterModel() {
  this.set('categories', this.store.findAll('category');
}

books / template.hbs

{{#each books as |book|}}
  {{book-details book=book categories=categories}}
{{/each}}

組件/book-detail/template.hbs

<h2>{{book.title}}</h2>
{{#each categories as |category|}}
  <p>{{category.name}}</p>
{{/each}}

對於這樣的類別,它不起作用,因此我需要找到一種從商店中獲取它們並將它們傳遞給我的組件的方法。

如果不需要獲取afterModel類別,建議您考慮使用這種方法並刪除afterModel實現。

model() {
  return {
    books: this.store.findAll('book'),
    categories: this.store.findAll('category')
  }
}

就個人而言,僅在與所討論的路線關聯的模型(即/books/thug-kitchen )下,我才開始定義路線的模型。 在我有多個適用於給定路線的模型的情況下,我更喜歡使用屬性。

更好的方法是使用Ember.RSVP.hash ,如下所示:

model: function() {
  return Ember.RSVP.hash({
    books: this.store.findAll('book'),
    categories: this.store.findAll('category')
  });
},

setupController: function(controller, models) {
  controller.setProperties(models);
}

如果服務器的響應延遲,則此代碼將最正確地工作。 泰勒(Tyler)的方法行得通,但是在完成查找之前,過早過渡到路線。 我認為他的方法行得通,因為您正在使用Ember Data,但是如果它是更通用的Promise,則行不通。 我希望我能解釋得更好,但是我自己的理解仍然很基礎。

之后,將兩個模型都傳遞到組件應該沒有任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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