我一直在尝试将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;
}
);
},
});
此外,我在这里做错了吗?
答案 0 :(得分:0)
如Finn MacCool和agmcleod所述,我试图使用错误类型的控制器。正确的行应该是:
App.FileController = Ember.ObjectController.extend({
});
不是我需要在这个小例子中明确设置FileController
。但是,如果我继续扩展代码,我将毫无疑问需要使用正确的代码。