Backbone入门

前端开发 作者: 2024-08-20 13:30:01
Backbone是一个轻量级的JavaScript MVC框架,主要用于构建单页面应用(SPA)。这篇文章大致介绍了Backbone的模型(Model)、视图(View)和集合(Collection)

1.创建一个model

1 var Person = Backbone.Model.extend({
2      initialize: function(){
3           alert('Hello world!');
4      }
5 });
6 var person = new Person;

2.设置model属性

 1  2      initialize: function(){//实例化时会执行这里的代码
 3           alert('Hello world!' 4  5  6 在实例化model时设置
 7 new Person({
 8      name: 'Jack', 9      age: 20
10 11 也可以在model实例化后,通过set方法进行设置
12  Person;
13 person.set({
14      name: 'Elizabeth'15      age: 18
16 17 person.set('age',22);设置单个属性

3.获取model属性

 3           console.log('Hello world!'     },1)"> 5      aboutMe:  6           return 'I\'m ' + this.get('name') + ',i live in ' + this.get('address').street;
 8  9 10      name: 'Asan'     address: {
12           street: 'Mongo Street'
14 15 console.log(person.aboutMe());
16 console.log(person.get('name'));

4.设置model默认属性

 2     defaults: { 设置默认属性
 3         name: 'Kagol Antony'        address: {
 5             street: '1st Street' 6             city: 'Shenzhen' 7             State: 'TX' 8             zipCode: 78701
        }
    },1)">11     initialize: 初始化,首先执行
12         console.log('hello world!')
14     aboutMe: 15             }
17 18 19      name: 'Asan'
20 21 console.log(person.get('name'));Asan
22 console.log(person.get('address').city);Shenzhen

5.使用model属性

 2     defaults: {
 4         hobby: 'basketball'
 6     initialize:  7         console.log('hello world!' 9     like: (hobbyName){
10         this.set({
             hobby: hobbyName
        });
16 person.like('coding'17 console.log(person.get('hobby'));

6.监听model属性的变化

 3         name: 'Elizabeth' 4         age: 18
 7         console.log('hello world' 8         this.on('change:name',(model){
 9             var name = model.get('name'10             console.log('Changed my name for ' + name);
        })
 Person ({
15     name: 'Jack'16     age: 20
17 }); 实例化的时候改变name属性不会触发change事件
18 person.set({name: 'Kagol'});触发change事件,输出:'Changed my name for Kagol'
19 console.log(person.hasChanged());true
20 console.log(person.changedAttributes()); Object {name: "Kagol"}

7.数据验证

 2     validate: (attributes){
 3         if(attributes.age < 0){
 4             return 'You can\'t be negative years old';
 7     initialize:  8         console.log('hello,world!' 9         this.on('invalid',1)">(model,error){
            console.log(error);
15 person.set({name: 'Mary Poppins',age: -21},{validate: true}); 会验证,输出"You can't be negative years old"
16 person.set({name: 'Mary Poppins',age: 20},1)">不会验证
17 person.set({name: 'Mary Poppins',1)">false});18 person.set({name: 'Mary Poppins',age: -21});不会验证

1.加载模板

<script type="text/template" id="search_template">
2     <label>My Search: /label>
3     input type="text idsearch_input4     buttonsearch_button valueSearch</scriptdiv id="search_contailer"></div>
var SearchView = Backbone.View.extend({
 2     initialize: .render();
 5     render:  6         var template = _.template($('#search_template').html(),{});
 7         .$el.html(template);
var search_view =  SearchView({
11     el: $('#search_contailer'12 });

2.添加监听事件

 9     events: {添加事件
10         'click #search_button': 'doSearch'
12     doSearch: 13         console.log('Search for ' + $('#search_input').val());
17     el: $('#search_contailer'18 });

3.向模板中传递参数

><%= search_label %>< 2     el: $('#search_contailer'),1)">可以将el直接写在这里
 3     initialize:  4          6     render: var variables = {使用模版变量
 8             search_label: 'Kagol Search: '  可以传递多个参数
        };
).html());
11         .$el.html(template(variables));
13     events: {14         'click #search_button': 'doSearch'
16     doSearch: 17         console.log('Search for ' + $('#search_input'19 new SearchView;
="artist_template"<% _.each(artists,function(artist){ %>
3         tr4             td artist.get('name) td>
5             hometown6         tr>
7      }); 8 9 table ="table"tablevar Artist = 3         name: 'Jack' 4         hometown: 'American'
(){}
var Artists = Backbone.Collection.extend({
    model: Artist
var artist1 =  Artist;
var artist2 =  Artist({
13     name: 'Kagol'14     hometown: 'China'
var artist3 = 17     name: 'Elizabeth'18     hometown: 'England'
var artists =  Artists([artist1,artist2,artist3]);
21 var ArtistView =22     el: $('#table'),1)">23     template: _.template($('#artist_template').html()),1)">24     initialize: 25         26 27     render: 28         this.$el.html(.template({
29             artists: artists.models
30         }));
31 32 33 var artistView = new ArtistView;
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_65537.html
Backbone入门