放入 Backbone
Put without fetch in Backbone
我要更新一条记录:
www.mywebsite.com/REST/mytable/16
但是;对于 mytable,我必须提供两个强制参数:
www.mywebsite.com/REST/mytable?param1=this¶m2=that
如果我想使用以下方法从此集合中获取模型,则找不到记录:
www.mywebsite.com/REST/mytable?param1=this¶m2=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¶m2=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') + '¶m2=' + this.get('param2');
}
});
此外,您声明您的 url 在语义上被声明为错误。您的查询字符串位置错误。
我要更新一条记录:
www.mywebsite.com/REST/mytable/16
但是;对于 mytable,我必须提供两个强制参数:
www.mywebsite.com/REST/mytable?param1=this¶m2=that
如果我想使用以下方法从此集合中获取模型,则找不到记录:
www.mywebsite.com/REST/mytable?param1=this¶m2=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¶m2=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') + '¶m2=' + this.get('param2');
}
});
此外,您声明您的 url 在语义上被声明为错误。您的查询字符串位置错误。