我的收藏和模型是这样的:
detail_userid = 0;
detail_contactid = 0;
var ContactDetail = Backbone.Model.extend({
urlRoot: URL_CONTACTS1+detail_userid+"/"+detail_contactid
});
var ContactDetailCollection = Backbone.Collection.extend({
model: ContactDetail,
url: URL_CONTACTS1+detail_userid+"/"+detail_contactid
})
入口处是:
ContactDetailManagePageModel.prototype.init = function(m,n){
detail_userid = m;
detail_contactid = n;
var myContactDetails = new ContactDetailCollection();
var contactDetailListView = new ContactDetailListView({
collection: myContactDetails
});
myContactDetails.fetch({reset:true});
}
但当它运行时,网址是:http://localhost:8080/ws/users/contacts/0/0
,这意味着对detail_userid和detail_contactid的赋值不成功,我不知道为什么。
希望你的帮助。谢谢。
3条答案
按热度按时间vi4fp9gy1#
我认为您在运行PageModel的init之前静态定义了urlRoot和url属性(虽然不太确定m和n是从哪里获得的...)
url和urlRoot都可以是一个函数,因此您可以在示例化过程中传入选项,并在模型上动态设置它们。
简单示例介绍如何定义集合,然后创建集合
正如我提到的,我不知道你的init函数在做什么,我猜它是你的应用程序的定制,我不需要担心。
我非常确定要做的主要事情是动态设置url和urlRoot
l7wslrjt2#
我会用几句话来满足这个公认的答案。
1.初始化
Backbone.Collection
时的第一个参数是模型数组,然后是选项。要创建包含选项的空集合,您应该执行以下操作var c = new Backbone.Collection(**null**,**{opt1: val1, opt2: val2}**);
个1.实际上,你不能在
url
函数中访问this.options
,因为没有像在模型中那样的选项。你能做的是,在初始化时从选项中分配所需的属性。稍后,您可以按如下方式访问它们:
zte4gxcn3#
我想从一个模型中使用HATEOAS href来获取另一个模型的数据,它只需要在新创建的集合上设置url,而不是在构造函数中立即定义它。