这是我的骨干代码
var UserModel=Backbone.Model.extend({
url: 'http://api.myapi.com/user'
});
var user=new UserModel();
user.set({id:1});
user.fetch();
console.log(user.get('screenname'));
这将返回整个用户集合,而不是id为1的用户。当我将网址更改为
时url: 'http://api.myapi.com/user/1'
我找回了我想要的用户。当我user.set({id:1});
注意 - 我的api位于不同的域名,这就是我在“url”属性中拥有整个网址的原因。请帮助,我准备放弃骨干。
答案 0 :(得分:5)
您必须设置urlRoot
而不是url
,Backbone会将id
添加到您网址的末尾:
var UserModel=Backbone.Model.extend({
urlRoot: 'http://api.myapi.com/user'
});
答案 1 :(得分:0)
您需要将ID添加到您的模型网址中。
url: function() {
if(this.id) {
return 'http://api.myapi.com/user/' + this.id;
}
return 'http://api.myapi.com/user';
}
然后当你实例化用户模型时,你可以传递一个像这样的id。
var user = new UserModel({id: 1});
然后,当您执行user.fetch()
时,它将获得'http://api.myapi.com/user/1'
另外,如果未将id
传递给UserModel
Backbone,则会向'http://api.myapi.com/user'
发送POST请求
答案 2 :(得分:0)
您需要验证两点:
urlRoot
作为其他API网址,但收藏使用url
。 fetch
成功回调
var UserModel = Backbone.Model.extend({ urlRoot:'http://api.myapi.com/user' });
var user = new UserModel(); user.set({ID:1});
//在成功回调中输出结果是安全的,这可以保证调用api user.fetch({success:function(){ 的console.log(user.get( '屏幕名')); }});