每个模型 Ember 未在模板中列出模型

Each model Ember not listing the models in template

我正在使用Ember.RSVP.hash在同一路线中创建不同的模型,我在商店中成功创建了模型记录,我可以在控制台中看到数据。

问题是我只能在我的模板中列出两个模型之一。 (回购名称但不是提交消息)。

这里是代码

路线

    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 重现问题。

好的,问题出在您的 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>

结果:

Working demo.