Backbone.js的集合

此源代碼來自《JavaScript快速全棧開發》中,經過網絡其他的學習摻雜整理出的代碼。

接下來會創建一個水果數據庫,也就是Rest API的替代品,它會提供給我們水果的名字和圖像URL(數據模型)

Rest API指一組架構約束條件和原則,滿足約束條件和原則的應用程序設計。(用固定的URI和可變的參數訪問某個服務,來完成一系列的業務請求)

接下來寫一個小例子,步驟:

(1)先引入三個庫文件(JQuery.js、Underscore.js、Backbone.js),第一篇Backbone.js的文章中有下載地址和版本號

(2)準備一個img文件夾存放兩張圖片,分別叫(watermelon.jpg和orange.jpg)

(3)再寫一段js,具體介紹在代碼上

<script>
		//準備一些數據,會提供名稱和圖像的URL
		var fruitData = [{name:"watermelon",url:"img/watermelon.jpg"},{name:"orange",url:"img/orange.jpg"}];
		var app;
		var router = Backbone.Router.extend({
			routes:{
				"":'fruit',
				//用戶瀏覽index.html#collectionType/名稱時即可看到存儲的某一個信息。
				//這個信息由Backbone Router裏定義的loadCollection函數獲取和渲染
				'collectionType/:collectionName':'loadCollection'
			},
			//創建Bacckbone Colelction使它和fruitData變量綁定,把集合傳遞給fruitView及collectionView
			initialize:function(){
				var collectionType = new CollectionType();
				collectionType.reset(fruitData);
				this.fruitView = new fruitView({collection:collectionType});
				this.collectionView = new collectionView({collection:collectionType});
			},
			fruit:function(){
				this.fruitView.render();
			},
			loadCollection:function(collectionName){
				this.collectionView.render(collectionName);
			}
		});
		//讓fruitView可以使用整個數據庫。
		//現在只是把數據以JSON字符串的形式展示在瀏覽器中
		var fruitView = Backbone.View.extend({
			el:'body',
			template:_.template('Fruit Data:<%=data%>'),
			render:function(){
				this.$el.html(this.template({data:JSON.stringify(this.collection.models)}));
			}
		});
		//CollectionType的Backbone Collection非常乾淨
		var CollectionType = Backbone.Collection.extend({});
		//Fruit的視圖只包含兩個屬性template和render
		var collectionView = Backbone.View.extend({
			//爲了讓Underscore.js模板引擎可以更好的處理這個任務,需要給figure、img、figcaption標籤展示特定的值
			//爲了保證閱讀性,使用反斜槓作爲結束符,或+來連接字符串
			template:_.template('<figure>\<img src="<%=attributes.url%>"/>\<figcaption><%=attributes.name%></figcaption>\<figure>'),
			render:function(collectionName){
				//用where方法和[]選擇第一個元素作爲模型
				var fruitModel = this.collection.where({name:collectionName})[0];
				var fruitHtml = this.template(fruitModel);
				$('body').html(fruitHtml);
			}
		});
		$(document).ready(function(){
			app = new router;
			Backbone.history.start();
		})
  </script>
(4)具體實現效果:

a.在網頁中可以看到用JSON展示的數據字符串

b.用index.html/#collectionType/orange即可看到對應存儲的圖片。

源代碼免費提供給大家,希望大家一起交流學習。感謝。http://download.csdn.net/detail/miss_ll/9698699

發佈了37 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章