我正在使用Ember.RSVP.hash在同一路线中创建不同的模型,我在商店中成功创建了模型记录,我可以在控制台中看到数据。
问题是我只能在模板中列出两个模型。 (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重现了这个问题。
答案 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>
结果: