現在、最初の Ember.js アプリを作成しています。App.PostRoute
私の問題は、jQuery Ajax のような呼び出し (非同期) の応答をの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