Kei*_*son 10 javascript backbone.js
我正在尝试在我的主干模型上设置一个变量获取方法,该方法将获取给定用户的当前模型.这可以从API上获得/api/mealplans/owner/{username}/current.
我写了以下模型.我注释掉了URL Root,因为原型提取调用只是使用了urlRoot,我想看看是否覆盖了我以某种方式传递的url参数.
var mealPlan = Backbone.Model.extend({
name: 'Meal Plan',
//urlRoot: '/api/mealplans',
defaults: {},
fetchCurrent: function (username, attributes, options) {
attributes = attributes || {};
options = options || {};
if (options.url === undefined) {
options.url = "/api/mealplans/owner/" + username + "/current";
}
return Backbone.Model.prototype.fetch.call(this, attributes, options);
},
validate: function (attributes) {
// To be done
return null;
}
});
Run Code Online (Sandbox Code Playgroud)
我已经看到这样做,在其他地方的某些变体中,例如在backbone.js使用不同的url进行模型保存和获取 - 在这种情况下代码略有不同(我从那开始并将其分解以使其更容易给我看.)
当我将它传递给fetch时,options对象的url参数很好,但是它似乎忽略了它!
Kei*_*son 15
我假设获取相同的参数以保存 - 事实并非如此.
fetch ONLY的方法签名采用'options'而不是'attributes',因此找不到url参数.
模型代码应该看起来更像这样..
var mealPlan = Ministry.Model.extend({
name: 'Meal Plan',
urlRoot: '/api/mealplans',
defaults: {
},
fetchCurrent: function (username, options) {
options = options || {};
if (options.url === undefined) {
options.url = this.urlRoot + "/owner/" + username + "/current";
}
return Backbone.Model.prototype.fetch.call(this, options);
},
validate: function (attributes) {
// To be done
return null;
}
});
Run Code Online (Sandbox Code Playgroud)