0

我正在编写一个没有使用 Ember-Data 的小 ember 应用程序(使用 TheMovieDB API),我不明白为什么单击{{#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({})

谢谢你的帮助 !

4

1 回答 1

0

由于您没有指定您的意思是哪个模型,我假设您的意思是movie模型,并且我的假设是我试图回答。

我认为您的问题是您的模板期望模型来自 aMovieIndexController因为您resource在路由器映射中指定了 a 而不是简单的route.

也就是说,解决方案可能是将您的控制器MovieIndexController分别重命名为 route MovieIndexRoute

在这里,我的答案基于Resources段落下的参考

希望能帮助到你

于 2013-05-18T18:13:43.560 回答