1. 程式人生 > >Backbone.js學習筆記——Collection篇

Backbone.js學習筆記——Collection篇

Collection 是backbone.js的一個重要組成部分。

學過java的朋友對於Collection 相當熟悉 ,已提到Collection 大家腦子裡估計都是List , Set, Map,等。不要懷疑 你自己,我們backbone 的List有著異曲同工之妙。

首先看官網解釋:

集合是model的有序組合,我們可以在集合上繫結"change" 事件,從而當集合中的模型發生變化時獲得通知,集合也可以監聽"add" 和“remove"

看下面例子

Book = Backbone.Model.extend({
defaults : {   
    name:null
}
});
Box = Backbone.Collection.extend({
model : Book  //model = collection.model 指定集合的模型類。可以傳入原始屬性物件(和陣列)來 add,create,以及 reset,傳入的屬性會被自動轉換為適合的模型型別。 


})
var bookyw = new Book({name:"語文"});
var booksx = new Book({name:"數學"});
var bookty = new Book({name:"體育"});


var box = new Box;
box.add(bookyw);
box.add(booksx);
box.add(bookty);
或者 var box = new Book([bookyw,booksx,bookty]);

<!DOCTYPE html>
<html>
<head>
    <title>Collection</title>
</head>
<body>
<p>Backbone Collection Example</p><hr>
<span id="animal_atr"></span>

	<label>我的書櫃</label><br>
	<div  style="position:relative;width:30%;height:30%;border:1px solid blue">
		<ul id="mybooks">
		</ul>
	</div>
	<button id="remove">移除</button>
	<button id="add">增加</button><input id="addInput">
	
</body>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

<script src="http://documentcloud.github.com/underscore/underscore-min.js"></script>
<script src="http://documentcloud.github.com/backbone/backbone-min.js"></script>
<script>
(function ($) {
	var bookId = 1;
	Book = Backbone.Model.extend({
		defaults : { 
			id:bookId,	
			name:"新"
		}
	});
    Box = Backbone.Collection.extend({
		model : Book  
		
	})
	var bookyw = new Book({id:bookId++,	name:"語文"});

	var box = new Box;
	box.add(bookyw);

	box.each(function(book){
		$('#mybooks').append("<li ><input type='checkbox' tid='"+book.get('id') +"'>"+book.get('name') +"書</li>");
	});

	$('#remove').click(function(){
		$('input:checked').each(function(){
			var index = $(this).attr('tid');
			var bookx = box.get(index);
			box.remove(bookx);
		})
		reloadpage();
		
	})
	$('#add').click(function(){
		var name = $('#addInput').val();
		var bookx =  new Book({id:bookId++,name:name});
			box.add(bookx);
		reloadpage();
		
	})
	 var  reloadpage = function (){
		$('#mybooks').html('');
		box.each(function(book){
			$('#mybooks').append("<li ><input type='checkbox' tid='"+book.get('id') +"'>"+book.get('name') +"書</li>");
		});
	}
    
})(jQuery);
</script>
</html>



相關推薦

Backbone.js學習筆記——Collection

Collection 是backbone.js的一個重要組成部分。 學過java的朋友對於Collection 相當熟悉 ,已提到Collection 大家腦子裡估計都是List , Set, Map,等。不要懷疑 你自己,我們backbone 的List有著異曲同工之

JS學習筆記-CSS(二)

5.CSS Fonts(字型) CSS字型屬性定義字型,加粗,大小,文字樣式。 serif和sans-serif字型之間的區別 Serif Times New RomanGeorgia Serif字型中字元在行的末端擁有額外的裝飾 Sans-serif

JS學習筆記-構造函數

返回值 def 說明 ins 是否 fun eight array per 創建實例funtion Fn (){ var num = 10; this.x = 100; this.getX = function(){ console.

vue.js學習筆記

bsp 系統 特性 學習 數據綁定 學習筆記 開始 問題 mvvm模式 1、vue.js的目的 Vue的產生主要是解決三個問題 1.1、主要解決的是數據綁定的問題 1.2、主要是構建大型的單頁面程序,解決app頁面卡頓的問題 1.3、支持組件式開發,采用積木式編程

Vue學習筆記入門——組件的內容分發(slot)

節點 pan 如何 new 深入 接收 span 初始 特殊屬性 本文為轉載,原文:Vue學習筆記入門篇——組件的內容分發(slot) 介紹 為了讓組件可以組合,我們需要一種方式來混合父組件的內容與子組件自己的模板。這個過程被稱為 內容分發 (或 “transclus

node.js學習筆記二之版本問題

nodejs targe tle 下一個 .cn blank 網站 mage 功能 一、版本說明 進入node.js官網https://nodejs.org/en/download/ 點擊上面的【All download options】進入到所有下載列表的地址 下載地

js學習筆記23----窗口尺寸及窗口事件

推薦 距離 bsp spa cnblogs offset borde code ini 窗口尺寸: 可視區的尺寸 document.documentElement.clientWidth document.documentElement.clientHeight

js學習筆記25----Event對象

blog oct tro 一個 函數定義 ttr span doctype char Event : 事件對象,當一個事件發生的時候,和當前這個對象發生的這個事件有關的一些詳細的信息都會被臨時保存到一個指定的地方-event 對象,供我們在需要時調用。 事件對象必須在

js學習筆記28----事件默認行為

onclick html ice 菜單 lang -- char top get 事件默認行為 : 當一個事件發生的時候瀏覽器自己會默認做的事情。 怎麽阻止? 當前這個行為是什麽事件觸發的,然後在這個事件的處理函數中使用return false; 右鍵菜單事件 o

vue+node.js學習筆記

拷貝 vue 靜態頁 -1 註冊 分享 head ade view 一、搭建vue開發環境 vue init webpack newmall cnpm install npm run dev 二、測試靜態頁 把靜態頁的css拷貝進來 src

js學習筆記

隱藏 重復 在哪裏 字節 基本類 變量 內存地址 他會 有效 1.變量 1.1重復的聲明和遺漏的聲明 由var聲明的變量是永久性的,所以說,用delete運算符來刪除變量會出錯; 使用var多次聲明一個變量不僅是合法的,而且不會造成任何錯誤。如果重復聲明的變量有一個初始值,

北風網-Vue.js 學習筆記

構造 應用 var json extend end 實例 定義 元素 第3節視頻:Vue.js的構造器和擴展 一、Vue.js的構造器   1、每個Vue.js應用都是通過構造函數Vue 創建一個根實例。     var vm = new Vue({       //選

Three.js 學習筆記(1)--坐標體系和旋轉

external 單位 svg cal resource nsf font cos 證明 前言 JavaScript 3D library The aim of the project is to create an easy to use, lightweight,

vue.js學習筆記(Vuejs——組件——props數據傳遞)

元素 綁定 筆記 即使 大小寫 return span com 簡單 ①組件實例的作用域: 是孤立的,簡單的來說,組件和組件之間,即使有同名屬性,值也不共享。 <div id="app"> <add></add>

Three.js學習筆記05

geo spec date 應用 rtm js學習筆記 setsize 技術分享 image 場景相關函數和屬性 下面的代碼中應用到了所有以上的函數及屬性: <!DOCTYPE html> <html lang="en"> <head>

Spring Cloud學習筆記一:分布式配置中心 Spring Colud Config】

16px gin war imp web項目 tps conf name request 一、簡介 Spring Cloud Config提供了在分布式系統的外部配置的客戶端支持。通過配置服務(Config Server)來為所有的環境和應用提供外部配置的集中管理。這些概念

Vue.js學習筆記總結1

tle clas 吃飯 line als list bool 都是 數據驅動 一、vue介紹 vue類似於高級的模版引擎 vue的核心思想就是:數據驅動視圖 MVVM <div id="app"> {{ message }} </div> var

js學習筆記01-函數,作用域,閉包

學習筆記${var} //變量的占位符, ${}裏邊 依舊是js,字符串拼接 var str1 = "Hello"; var str2 = "World"; console.log("say: "+str1+" "+str2+"!"); console.log(`say: ${str1} ${str2}!`)

js學習筆記02-類和對象,繼承

類 繼承 創建類和對象 //1)構造函數定義類,不用new function Dog(){ this.name = "Luby"; this.say = function(){ console.log("wangwang!"); } } let objDog = new Dog(); //

js學習筆記04-ES6函數(箭頭函數與this),class

箭頭函數 函數參數默認值 ES6 類的創建 箭頭函數 讓簡短單行函數更容易編寫和閱讀的普通函數可以是函數聲明或函數表達式,但是箭頭函數始終是表達式普通函數(把名字轉換為大寫) const upperNames = [‘Fish‘, ‘RedHands‘, ‘Sugarbeans‘].map(fun