我怎么能等到我的find方法完成了从后端加载模型的工作?模型加载后,我想获取其他数据并用该数据装饰我的电影模型。对外部api的请求是根据电影模型的属性(例如年份和标题)从中获取附加数据的。
App.Movie.adapter = Ember.Adapter.create({
find: function(record, objectId) {
return Ember.$.ajax({
headers: {
'X-Parse-Application-Id': '',
'X-Parse-REST-API-Key': ''
},
type: 'GET',
url: 'https://api.parse.com/1/classes/Movie' + '/' + objectId
}).then(function(data) {
record.load(objectId, data);
});
}
});
App.MoviesMovieRoute = Ember.Route.extend({
model: function (movie) {
return App.Movie.find(movie.movie_id);
},
afterModel: function(movie, transition) {
// currently undefined, undefined
console.log(movie.get('title'), movie.get('year'));
}
});
App.MoviesMovieController = Ember.ObjectController.extend({
contentObserver: function () {
// fetch additional data from external api
}.observes('content')
});
谢谢
对于ember模型,请使用fetch,它将返回promise,并且ember将等到解析该模型后再执行下一个模型。
return App.Movie.fetch(movie.movie_id);
find会建立一个虚拟记录并立即返回记录(并在数据可用时填充它),而fetch会建立记录,一个promise并返回promise,当填充记录时将解析为该记录。
他们都将使用适配器的find方法。
App.MoviesMovieRoute = Ember.Route.extend({
model: function (movie) {
return App.Movie.find(movie.movie_id);
},
afterModel: function(movie, transition) {
// currently undefined, undefined
console.log(movie.get('title'), movie.get('year'));
},
serialize: function(model){
return { movie_id: model.get('whateverfieldhastheid')};
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句