首先,我認爲你的「模式」從REST服務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>
首先我點擊 「基本-BTN」,將得到這樣的結果:
然後我點擊 「屬性-BTN」 和屬性將被合併到存在的列表項中:
希望這對你有幫助。
非常感謝,但我忘了說我必須爲每個元素獲取屬性。這意味着我必須爲我的收藏中的每個模型做一個單獨的休息呼叫。用模型的id。 –