我有一个资源,我在其中列出了服务器 /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/first-project页面时,问题就来了。Ember 发出 ajax 请求以从服务器获取数据,但它还插入一个空行,其中 slug 作为 id 作为数据。
id | Slug | Title |
-------------------------------------------------------------
first-project | | |
-------------------------------------------------------------
1 | first-project | First project |
现在访问项目列表它显示了一个项目列表,但列表顶部是这个空行。为什么将这个 slug 行插入我的数据?也许我的逻辑是错误的。
<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: -------------------------------