2015-12-08 65 views
1

我正在使用Ember.RSVP.hash在相同的路由中創建不同的模型,我成功地在商店中創建模型記錄,我可以在控制檯中看到數據。 enter image description here每個模型Ember沒有列出模板中的模型

問題是,我只能在我的模板中列出一個兩個模型。 (回購名稱,但不是提交消息)。

下面的代碼

路線

var gitrepositoriesPromise = function() { 
     return Ember.$.ajax(reposUrl, { 
      success: function(repos) { 
      return repos.map(function(repo) { 
       return store.createRecord('repo', { 
        name: repo.name, 
        description: repo.description 
       }); 
      }); 
      }, 
      error: function(reason) { 
      reject(reason); 
      }}); 

    }; 

    var gitactivitiesPromise = function() { 
     return Ember.$.ajax(eventsAct, { 
      success: function(events) { 
       return events.filter(function(event) { 
        return event.type == 'PushEvent'; 
       }).forEach(function(item){ 
        return item.payload.commits.map(function(commit){ 
         return store.createRecord('commit', { 
          message: commit.message, 
         }); 
        }); 
       }); 
      }, 
      error: function(reason) { 
      reject(reason); 
     }});    
    };  



    return Ember.RSVP.hash({ 
     commits: gitactivitiesPromise(), 
     repos: gitrepositoriesPromise() 
    }); 

模板

<ul> 
    {{#each model.repos}}   
     <li>{{name}}</li> 
    {{/each}} 
    </ul> 
    <ul> 
    {{#each model.commits}} 
     <li>{{message}}</li> 
    {{/each}} 
    </ul> 

所以問題一定是在這裏

{{#each model.commits}} 
    <li>{{message}}</li> 
{{/each}} 

我到底做錯了什麼? here the jsbin重現此問題。

+0

我不知道在哪裏他的問題是,但我已經意識到在'jsbin'中提交的點有30個點,而你的模型只有26個記錄(如Ember檢查員所示)。也許'Ember.RSVP.hash'沒有按預期工作。它可能是一個與您正在使用的'Ember'版本相關的錯誤? –

+0

我試圖只返回沒有'RSVP'的提交,它也是這樣,所以問題出現在你的函數'gitactivitiesPromise'中。 –

+0

好,因爲我可以看到模型數據(附加的控制檯圖像)我認爲gitactivitiesPromise不是問題 – Koala7

回答

2

好的,所以問題出在你的gitactivitesPromise函數中。我已經修改了你的方法使用Ember.RSVP.hash

var gitactivitiesPromise = function() { 
    return new Ember.RSVP.Promise(function (resolve) { 
    Ember.$.ajax(eventsAct, { 
     success: function(events) { 
     var result = []; 
     events.filter(function(event) { 
      return event.type == 'PushEvent'; 
     }).forEach(function(item){ 
      item.payload.commits.map(function(commit){ 
      result.push(store.createRecord('commit', { 
       message: commit.message, 
      })); 
      }); 
     }); 
     resolve(result); 
     }, 
     error: function(reason) { 
     reject(reason); 
     } 
    }); 
    }); 
}; 

這可讓您訪問message模板是這樣的:

Commits: 
<ul> 
    {{#each model.commits}} 
    <li>{{this.message}}</li> 
    {{/each}} 
</ul> 

結果:

screenshot

Working demo.