我现在有一个混乱的状态,任何人都明白我的怀疑并提供有关http://backbonerelational.org/的更多详情吗?
基本上,
为什么我们使用关系
当我们需要决定使用
我们不能用Backone.js本身实现相同的目标..?
我有这种情况,我有这样的样本json:
var navi = {
"mainLinkLabel": "Home",
"mainLinkHref": "/home.html",
"sublinks": [
{
"sublinkLabel": "subHome1",
"sublinkHref": "/home/home1.html"
},
{
"sublinkLabel": "subHome2",
"sublinkHref": "/home/home2.html"
},
{
"sublinkLabel": "subHome3",
"sublinkHref": "/home/home3.html"
}
]
}
它有主链接和子链接:
为此,我应该让模型像覆盖这两个信息一样:
var bothModels = Backbone.Model.extend({
defautls:{
"mainLinkLable" : "default Lable",
"mainLinkHref" : "#",
"sublinks" : [
"sublinkLabel" : "default sublink",
"sublinkHref" : "#"
]
}
})
或者我需要为每个模型制作单独的模型并使用Backbone-relational连接..像这样?
var mainModel = Backbone.Model.extend({
defautls:{
"mainLinkLable" : "default Lable",
"mainLinkHref" : "#"
}
})
var subModel = Backbone.Model.extend({
defaults:{
"sublinkLabel" : "default sublink",
"sublinkHref" : "#"
}
})
如果是这样,我怎么能连接这两个模型..我会得到什么好处。我在互联网上搜索,找到一些简单的教程来理解这个..但我不能带来一些..
任何人都要澄清这个场景吗??
答案 0 :(得分:2)
我之前没有使用过Backbone关系。但我会构建结构,使用2个模型并在模型上使用parse
方法并传递主要集合。
var navi = {
"mainLinkLabel": "Home",
"mainLinkHref": "/home.html",
"sublinks": [{
"sublinkLabel": "subHome1",
"sublinkHref": "/home/home1.html"
}, {
"sublinkLabel": "subHome2",
"sublinkHref": "/home/home2.html"
}, {
"sublinkLabel": "subHome3",
"sublinkHref": "/home/home3.html"
}]
};
var MainModel = Backbone.Model.extend({
defauts: {
"mainLinkLable": "default Lable",
"mainLinkHref": "#"
},
parse: function(response) {
if(response.sublinks) {
this.subCollection = new SubCollection(response.sublinks || null, { parse: true });
}
delete response.sublinks;
return response;
}
})
var SubModel = Backbone.Model.extend({
defaults: {
"sublinkLabel": "default sublink",
"sublinkHref": "#"
}
});
var MainCollection = Backbone.Collection.extend({
model: MainModel
});
var SubCollection = Backbone.Collection.extend({
model: SubModel
});
var mainCollection = new MainCollection(navi, {parse : true});
console.log(mainCollection);
<强> jsFiddle 强>
因此,如果您想访问每个模型中的子链接集合。你只需要使用
this.subCollection
会为您提供相关的收藏。
答案 1 :(得分:1)
Backbone.js不支持框中的嵌套模型。实际上,您处理的是嵌套模型:发票包含行,部分包含员工等。
你应该研究一下你的bussine模型,如果你有如上所述的嵌套模型,Backbone.Relational
会帮助你。
您基本上无法使用Backbone.js
本身存档,期望编写自己的自定义代码,以重载parse
模型方法。我们在我工作的一个项目上做了这个,但是主要的经验教训是 - 使用时间推广的插件而不是自己的轮子重塑。 Backbone.Relational
似乎是个不错的选择。