放入Backbone

时间:2015-08-17 15:03:32

标签: rest backbone.js

我想更新记录:

www.mywebsite.com/REST/mytable/16

但;对于mytable,我必须提供两个强制参数:

www.mywebsite.com/REST/mytable?param1=this&param2=that

如果我想使用以下内容从此集合中获取模型,则无法找到记录:

www.mywebsite.com/REST/mytable?param1=this&param2=that/16

这可以通过以下代码实现:

var Model = Backbone.Model.extend({
    idAttribute : "ID"
});
var Col = Backbone.Collection.extend({
    model : Model,
    url : $scope.base + $scope.selected.table.entity.Name + "?param1=1&param2=2"
});
connector.fetch().then(function () {
                var record = connector.get(toBeChangedRecordId);

                record.set(props); //attributes as json 

                .save({
                        success : $scope.putCallback,
                        error : $scope.putCallback
                    });
}

它不起作用,因为在上面的url中,没有找到记录。而不是这个,我需要另一种方式,所以我可以给我的ID来改变记录(因此www.mywebsite.com/REST/mytable/16 + JSON object。这怎么可能?

1 个答案:

答案 0 :(得分:1)

当您使用这样的动态网址时,您可以将url method包装在类似的函数中

Backbone.Model.extend({
idAttribute : "ID",
url: function() {
    var idStr = ''
    if (this.isNew()) {
        idStr = '/' + this.get('id')
    }
    return 'http://www.mywebsite.com/REST/mytable' + idStr + '?param1=' + this.get('param1') + '&param2=' + this.get('param2');
}
});

另外,您声明您的url在语义上声明错误。您的查询字符串位置错误。