我在不使用Ember-Data(使用TheMovieDB API)编写一个小的ember应用程序,我不明白为什么在点击{{#linkTo}}
链接时没有加载模型,但是当我刷新页面时手动数据已正确加载。
这是我的App.js:
window.App = Ember.Application.create();
App.Router.map(function() {
this.route('about');
this.resource('movie', {
path: '/movie/:movie_id'
})
});
App.IndexRoute = Ember.Route.extend({
setupController: function (controller) {
var movies = [];
$.ajax({
url: "http://api.themoviedb.org/3/movie/popular?api_key=5b088f4b0e39fa8bc5c9d015d9706547",
type: "GET",
async: false,
success: function (data) {
var length = data.results.length;
data.results.forEach(function (item) {
if (item.backdrop_path != null) {
var tmp = item.backdrop_path;
item.backdrop_path = "http://cf2.imgobject.com/t/p/w500/"+tmp+"?api_key=5b088f4b0e39fa8bc5c9d015d9706547"
movies.push(item);
}
})
}
});
controller.set('content', movies);
}
});
App.MovieRoute = Ember.Route.extend({
model: function (param) {
var infos;
/* Important !! */
var promise = Ember.Deferred.create();
$.ajax({
url: "http://api.themoviedb.org/3/movie/"+param.movie_id+"?api_key=5b088f4b0e39fa8bc5c9d015d9706547",
type: "GET",
success: function (data) {
var tmp = data.backdrop_path;
data.backdrop_path = "http://cf2.imgobject.com/t/p/w500/"+tmp+"?api_key=5b088f4b0e39fa8bc5c9d015d9706547";
// infos = Ember.Object.create(data)
promise.resolve(data);
}
});
console.log("MODEL");
return promise;
},
setupController: function (controller, model) {
controller.set('content', model);
}
});
App.Movie = Ember.Object.extend({})
感谢您的帮助!
答案 0 :(得分:0)
由于你没有指明你的意思是哪个模型,我假设你的意思是movie
模型,而我的假设是我试图回答。
我认为您的问题是您的模板需要来自MovieIndexController
的模型,因为您在路由器地图中指定了resource
而不是简单的route
。
也就是说,解决方案可能是将控制器重命名为MovieIndexController
和路由MovieIndexRoute
。
此处reference我的答案基于资源段落。
希望有所帮助