サーバー /projects からすべてのプロジェクトを一覧表示するリソースがあります。/projects/:slug に行く特定のプロジェクトにアクセスできます。
プロジェクト リソースにアクセスすると、Ember Inspector に次のデータが表示されます。
/プロジェクト
id | Slug | Title |
-------------------------------------------------
1 | first-project | First project |
-------------------------------------------------
2 | second-project | Second project |
-------------------------------------------------
3 | third-project | Third project |
プロジェクトのリストからプロジェクトにアクセスすると、新しい ajax リクエストなしで同じデータを取得し、すべて正常に動作しています。/projects/最初のプロジェクト
/projects/first-projectページを更新すると問題が発生します。Emberはサーバーからデータを取得するためにajaxリクエストを行いますが、データへのIDとしてスラッグを持つ空の行も挿入します。
id | Slug | Title |
-------------------------------------------------------------
first-project | | |
-------------------------------------------------------------
1 | first-project | First project |
プロジェクトリストにアクセス中 プロジェクトのリストが表示されていますが、リストの一番上にこの空の行があります。このスラッグ行がデータに挿入されるのはなぜですか? 多分私の論理は間違っています。
<li>
<a id="ember451" class="ember-view" href="/projects/undefined">
<script id="metamorph-13-start" type="text/x-placeholder"></script>
<script id="metamorph-13-end" type="text/x-placeholder"></script>
</a>
</li>
プロジェクトの私のコード:
App.Router.map(function() {
this.resource('project', { path: '/projects' }, function() {
this.resource('project.show', { path: ":post_slug"});
});
});
App.Project = DS.Model.extend({
slug: DS.attr("string"),
title: DS.attr("string")
});
App.ProjectIndexRoute = Ember.Route.extend({
model: function() {
return this.store.find('project').then(function(data) {
return data;
});
}
});
App.ProjectShowRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('project', params.post_slug).then(function(data) {
return data;
});
},
serialize: function(model) {
return { post_slug: model.get("slug") };
}
});
私は使用しています:
DEBUG: -------------------------------
DEBUG: Ember : 1.1.2
DEBUG: Ember Data : 1.0.0-beta.3
DEBUG: Handlebars : 1.0.0
DEBUG: jQuery : 1.9.1
DEBUG: -------------------------------