首先,我认为从 Rest Service 1 获取的“模型”应该如下所示:
{"id":"31","folder":"fid3223"}
{"id":"32","folder":"fid2323"}
一个对象代表一个列表项对吗?
您的合并集合应如下所示:
[{"id":"31","folder":"fid3223","propertys":{"prop1":"value1","prop2":"value2","prop3":"value3"}}
您希望将这两个 Rest 服务数据合并到一个集合中。当您的数据设置了唯一的 id 属性时,主干提取方法将执行“智能”提取。因此,您可以将 Rest1 服务获取到集合中,然后将其 url 属性动态更改为 Rest2 url,然后再次获取。相同的 id 列表数据将被合并。
简单的例子:
模型:
var List = Backbone.Model.extend({
});
收藏:
var Lists = Backbone.Collection.extend({
model: List,
url:"ur/url/to/rest1"
});
var lists = new Lists();
查看:(checkItem 功能将帮助您查看您的收藏中的模型发生了什么)
var ListView = Backbone.View.extend({
el: "#list-view",
initialize: function(){
this.listenTo(lists,"add",this.checkItem);
this.listenTo(lists,"change",this.checkItem);
},
checkItem: function(model){
console.dir(model);
});
var listView = new ListView();
$("#basic-btn").click(function(){
lists.fetch();
});
$("#property-btn").click(function(){
lists.url = "ur/url/to/rest2";
lists.fetch();
});
HTML:
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript" src="js/jquery-1.8.2.js"></script>
<script type="text/javascript" src="js/jquery-easing-1.3.js"></script>
<script src="js/bootstrap.min.js"></script>
<!--backbone-->
<script type="text/javascript" src="js/backbone/underscore.js"></script>
<script type="text/javascript" src="js/backbone/backbone.js"></script>
<script type="text/javascript" src="js/test.js"></script>
</head>
<body>
<button id="basic-btn">load basic</button>
<button id="property-btn">load property</button>
<ul id="list-view">
</ul>
</body>
</html>
首先我点击“basic-btn”,会得到这样的结果:
然后我单击“property-btn”,属性将合并到现有列表项中:
希望这对你有帮助。