我对Backbone还是比较新的。我刚刚开始了解它是如何工作的。我已经使用Rails了一段时间,这是在使用Backbone时给我一些暗示的东西。所以这里:
很简单,我在Rails中有一个公司模型说我在javascript控制台中做了
companies = new Backbone.Collection();
companies.url = '/companies';
companies.url; // '/companies'
companies.fetch();
company = companies.at(0);
company.url
最后一行,“company.url”没有回复我的期望,我期望的是'/ companies / 12345',所以当我更新公司并决定保存它时,它会知道在哪里“把“放到。
这是否意味着每次我想要保存的东西,我都要保存整个系列?(!)
答案 0 :(得分:2)
我会看一下company.url()
正在返回的内容。不需要保存整个集合。
答案 1 :(得分:0)
我正在尝试你的问题,并发现模型没有得到它的ID。所以模型上的url方法不起作用。所以我认为你需要把你的收藏品放在下面(我试过的)
cltn = Backbone.Collection.extend({
model:modelName,
parse:function(res){
var i = 0;
var itms = _.map(res.items, function(o){
o.id = ++i;
return o
})
return itms;
}
});
cltnInst = new cltn();
cltnInst.url="/combodata.json?";
cltnInst.fetch();
然后在你的萤火虫中输入以下代码。
cltnInst.url; // this is a string props. output will be "/combodata.json?"
cltnInst.at(0).url() // this is a method props output will be "/combodata.json?/1"
combodata.json将采用这种格式
{
"identifier": "title",
"items": [
{
"title": "A",
"tag": "htmlcss",
"date": "today"
}, ...
]}
如果我的回答有误,请纠正我。
答案 2 :(得分:0)
我实际上在尝试创建新公司集合的过程中犯了一个错误。 而不是
var Companies = new Backbone.Collection()
我应该这样做:
var Companies = Backbone.Collection.extend({
model: Company,
url : '/companies'
});
var Company = Backbone.Model.extend();
var companies_collection = new Companies()
companies_collection.fetch()
companies_collection.models[0].url() // '/projects/123'