簡體   English   中英

迭代Ember.js余燼數據記錄數組

[英]Iterating over Ember.js ember-data Record Arrays

我整天都在反對這個問題,我覺得我已接近解決方案,但卻無法實現。 我正在使用Ember.js和Ember-Data以及Fixtures適配器,最終遷移到REST適配器。 基本問題是:我有網站和主管,有多對多的關系。 我想向用戶顯示他們現有站點/主管配對的選擇框,按站點排序,即:

  • 網站1 - 主管1
  • 網站1 - 主管2
  • 站點2 - 主管1 (記住,多對多)
  • 第2站 - 主管3

我需要將這兩個資源爭用到一個數組中,我可以將其傳遞給從Ember.Select繼承(或將繼承)的視圖。 目前我正在嘗試使用Supervisors控制器上的一個方法,我稱之為“平坦”,因為它將返回一個表示這些關系的扁平數組。 控制器如下所示。 我正在使用.find()。then()來處理承諾完成后的數據。 我得到的數據似乎包含我的所有四個燈具,但是當我嘗試它們的任何可枚舉方法時(特別是forEach),它的行為就像它只返回了第一個對象一樣。 我試過迭代數據對象以及data.get('content')。 我對Ember很新,所以也許我不管怎么說這都是錯的,但無論如何這對我來說似乎很奇怪。 這是我的代碼:

App.SupervisorsController = Ember.ArrayController.extend({
  flat: function(){
    return App.Supervisor.find().then(function(data){
      var c = data.get('content') ;
      console.log(c) ;    // <-- logs an object containing four records,
                          //     with attribute "length" showing 4
                          //     Great! (see below for log output)

      console.log(c[0]) ; // <-- logs first record. Great!
      console.log(c[1]) ; // <-- undefined (?!)
      console.log(c[2]) ; // <-- undefined (?!)
      console.log(c[3]) ; // <-- undefined (?!)
      console.log(c.get('length')) ; // <-- 1 (not four?!)

      return c ; // <-- eventually this will return the newly constructed array
    }) ;
  }
}) ;

這是第一個console.log()調用的日志輸出

0: Object
1: Object
2: Object
3: Object
__ember1376005434256: "ember325"
__ember1376005434256_meta: Meta
_super: undefined
length: 4
__proto__: Array[0]

你能告訴我我在這里失蹤了嗎? 我無法弄清楚如何訪問四個結果主管中的每一個。

謝謝!

看起來您在完成加載之前訪問模型(您可以在屬性中看到這個,isUpdating)。 如果你覺得懶洋洋地看着這個,你可以稍后使用ember run來看看這些項目。 或者您可以在控制器上設置模型並渲染它,並在模型完成加載后讓ember更新視圖...

 Ember.run.later(function(){
    data.forEach(function(item){
    console.log(item);
   });
 }, 2000);



 App.ApplicationRoute = Ember.Route.extend({
   activate: function(){
     this.controllerFor('supervisors').set("model", App.Supervisor.find());
   }
 });

http://jsbin.com/ijiqeq/12/edit

祝恩伯恩好運!

 someArray: function(){
   var arr = Ember.A();
   this.get('model').forEach(function(item){
     item.get('sites').forEach(function(site){
       arr.pushObject(someObject); //some object that is represents each specific combination
     });
   });
 }.property('model')

暫無
暫無

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

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