添加Computed Property时,Ember Data使用错误的请求方法

时间:2014-12-18 12:29:34

标签: ember.js ember-data

我对此有详细的观察。不知道我在这里做错了什么。我有一个模型定义,我计算一个布尔值。导致deleteRecord()方法使用错误的请求方法(POST而不是DELETE)发送数据的原因。此外,当我致电save()方法时,它会通过PUT而不是POST

发送请求

请注意:删除计算属性定义时,代码正常工作。

模型定义

var attr = DS.attr(),
    string = DS.attr('string'),
    boolean = DS.attr('boolean'),
    number = DS.attr('number'),
    hasMany = DS.hasMany();

App.Status = DS.Model.extend({
    sticky: boolean,
    title: string,
    date: string,
    categories: attr,
    content: string,
    comment_allowed: boolean,
    replying: DS.attr('boolean', {defaultValue: false}),

    isNew: function(){ 
        var unix = parseInt( moment(this.get('date')).format('X') );
        var current = parseInt(moment().format('X'));
        var four_hours = 60 * 60 * 4;
        return ( (unix + four_hours) > current);
    }.property('date')

});

从控制器中删除项目

当我尝试删除记录表单时,操作处理程序destroyRecord()使用POST而不是DELETE发出ajax请求。请求网址也是错误的。它会发送到/statuses而不是/status/id

App.IndexController = Ember.ArrayController.extend({
    actions: {

        deleteStatus: function(status_id){

            if(!confirm('Are you sure you want to delete this status?'))
                return;

            this.store.find('status', status_id).then(function(status){
                console.log(status);
                status.destroyRecord();
            });
        }
    }
});

另请注意,计算属性函数按预期工作,没有任何错误。

修改

在下面找到RESTAdapter的代码。再次,如果我注释掉Computed Property部分,代码工作正常。

App.ApplicationAdapter = DS.RESTAdapter.extend({
    host: config.siteUrl,
    namespace: 'wp-json',
    headers: {
        "X-WP-Nonce": config.nonce
    }
});

1 个答案:

答案 0 :(得分:2)

您不能将isNew用于属性名称,因为ember-data已经将其用于其自身目的。尝试将属性更改为isRecent或类似的内容。