gpt4 book ai didi

javascript - 如何等到 find 方法完成后再在 Ember 模型中进行进一步处理

转载 作者:行者123 更新时间:2023-12-02 18:05:30 25 4
gpt4 key购买 nike

如何等到我的 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 ,该 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')};
}
});

关于javascript - 如何等到 find 方法完成后再在 Ember 模型中进行进一步处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com