我目前正在构建我的第一个 Ember.js 应用程序。我的问题是将 jQuery Ajax 类似调用(异步)的响应返回到App.PostRoute
' 的model
属性。我有点困惑,IndexRoute
工作和PostRoute
不工作。couchdb.read(doc, callback)
将单个对象返回给回调,couchdb.view(doc, func, callback)
并将对象数组返回给回调。这个 Ember.js 应用程序的主要来源是twbrandt.github.com/2013/02/11/Ember-Quick_Start_Guide。
this.App = Ember.Application.create();
App.Router.map(function () {
this.resource('post', { path: '/posts/:post_id' });
});
App.IndexRoute = Ember.Route.extend({
model: function() {
return App.Post.newest();
}
});
App.PostRoute = Ember.Route.extend({
model: function (parameters) {
return App.Post.get(parameters.post_id);
}
});
App.Post = Ember.Object.extend();
App.Post.reopenClass({
get: function (id) {
var post;
couchdb.read('post-' + id, function (response) {
post = App.Post.create(response); // thanks to mavilein
}); // gets a single post by it's id
return post;
},
newest: function () {
var posts = [];
couchdb.view('posts', 'all?limit=10&descending=true', function (posts) {
posts.forEach(function (post) {
posts.addObject(App.Post.create(post));
}, this);
}); // loads the 10 newest posts
return posts;
}
});
更新:感谢mavilein的帮助,现在效果更好了!但我只是有一个问题,我不能直接访问单张贴页面(它只显示默认模板)。我总是必须先访问索引页面,然后单击指向单个帖子页面的链接。这是一个包含我的整个代码的 jsFiddle。jsfiddle.net/dZs2X/2