每个模型Ember都没有在模板中列出模型

时间:2015-12-08 20:59:29

标签: javascript ember.js ember-data ember-cli jsbin

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

问题是我只能在模板中列出两个模型。 (repos name但不是提交消息)。

这里是代码

路线

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

1 个答案:

答案 0 :(得分: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.