空控制器块视图。为什么?

时间:2013-04-02 14:07:59

标签: ember.js

我一直在尝试将Ember与JSON服务器一起使用,但没有使用ember-data。我的测试应用程序从一个小的JSON结构(从一个Go Go服务器生成)呈现一个图像目录。

有人可以向我解释为什么,如果我在下面的代码中取消注释App.FileController,相应的File视图无法呈现?

window.App = Ember.Application.create();

App.Router.map(function() {
  this.resource('files',function(){
    this.resource('file',{path:':file_id'});
  });
});

App.FilesRoute = Ember.Route.extend({
  model: function() {
    return App.File.findAll();
  }
});

App.FileRoute = Ember.Route.extend({
    setupController: function(controller, args) {
        controller.set('model', App.File.find(args.id));
    },
    model: function(args) {
        return App.File.find(args.file_id);
    }
});

App.File = Ember.Object.extend({
    urlPath: function(){
      return "/pics/" + this.get('id');
    }.property('id'),   
});

如果我取消注释,事情就会破裂:

// App.FileController = Ember.Controller.extend({

// });

(即,File子视图根本不再呈现。)

App.File.reopenClass({
    find: function(id){
        file = App.File.create({'id':id});
        return file;
    },

    findAll: function() {
        return $.getJSON("http://localhost:8080/api/").then(
            function(response) {
                var files = [];
                response.Files.forEach(function (filename) {
                    files.push(App.File.create({'id':filename}));
                });
                return files;
            }
        );
    },

});

此外,我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

Finn MacCoolagmcleod所述,我试图使用错误类型的控制器。正确的行应该是:

App.FileController = Ember.ObjectController.extend({
});

不是我需要在这个小例子中明确设置FileController。但是,如果我继续扩展代码,我将毫无疑问需要使用正确的代码。