加载模型就像没有ember-data的刷新一样

时间:2013-05-18 17:54:39

标签: ember.js

我在不使用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({})

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

由于你没有指明你的意思是哪个模型,我假设你的意思是movie模型,而我的假设是我试图回答。

我认为您的问题是您的模板需要来自MovieIndexController的模型,因为您在路由器地图中指定了resource而不是简单的route

也就是说,解决方案可能是将控制器重命名为MovieIndexController和路由MovieIndexRoute

此处reference我的答案基于资源段落。

希望有所帮助