加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – Ember将空行添加到数据,其中slug为id

发布时间:2020-12-16 02:56:42 所属栏目:百科 来源:网络整理
导读:我有一个资源,我从服务器/项目列出我的所有项目.您可以访问去/ projects /:slug的特定项目. 当我访问项目资源时,我在Ember Inspector中看到了这些数据: /项目 id | Slug | Title |-------------------------------------------------1 | first-project | F
我有一个资源,我从服务器/项目列出我的所有项目.您可以访问去/ 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: -------------------------------

解决方法

添加这有帮助.现在主键是Project模型的slug,它不会重复行.

App.ProjectSerializer = DS.RESTSerializer.extend({
    normalize: function(type,hash,property) {
        hash.id = hash.slug;
        return this._super(type,property);
    }
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读