Mr.*_*ive 5 ajax ember.js ember-data
我有一个资源,我从服务器/项目列出我的所有项目.您可以访问去/ projects /:slug的特定项目.
当我访问项目资源时,我在Ember Inspector中看到了这些数据:
/项目
id | Slug | Title |
-------------------------------------------------
1 | first-project | First project |
-------------------------------------------------
2 | second-project | Second project |
-------------------------------------------------
3 | third-project | Third project |
Run Code Online (Sandbox Code Playgroud)
当我从项目列表中访问项目时,我得到相同的数据,没有新的ajax请求,一切正常./项目/第一项目
当我刷新/ projects/first-project页面时出现问题.Ember发出一个从服务器获取数据的ajax请求,但它也插入了一个空行,其中slug作为数据的id.
id | Slug | Title |
-------------------------------------------------------------
first-project | | |
-------------------------------------------------------------
1 | first-project | First project |
Run Code Online (Sandbox Code Playgroud)
现在访问项目列表它显示了一个项目列表,但在列表的顶部是这个空行.为什么要将这个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>
Run Code Online (Sandbox Code Playgroud)
我的项目代码:
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") };
}
});
Run Code Online (Sandbox Code Playgroud)
我正在使用:
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: -------------------------------
Run Code Online (Sandbox Code Playgroud)
添加这个有帮助。现在,项目模型的主键是 slug,并且它不重复行。
App.ProjectSerializer = DS.RESTSerializer.extend({
normalize: function(type, hash, property) {
hash.id = hash.slug;
return this._super(type, hash, property);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
311 次 |
| 最近记录: |