放入 Backbone

Put without fetch in Backbone

我要更新一条记录:

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。这怎么可能?

当您像这样执行动态 URL 时,您可以将 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 在语义上被声明为错误。您的查询字符串位置错误。