1

我正在使用 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}}

我究竟做错了什么?这里的 jsbin重现了这个问题。

4

1 回答 1

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>

结果:

截屏

工作演示。

于 2015-12-11T14:11:55.013 回答