backBone.js之Model篇 (1) 简单实例

    “Model是js应用的核心,包括基础的数据以及围绕着这些数据的逻辑:数据转换、验证、属性计算和访问控制”。

一、初始化方法

  我们先来看一个demo,initialize,这是一个初始化方法,但是写这段代码之前,首先要在<head>元素中导入3个相应的库文件,即jQuery框架、Backbone主框架和依赖库Underscore。需要注意它们导入页面的顺序,由于代码是按照自上而下的顺序进行执行的,因此先导入jQuery框架文件;Backbone依赖于Underscore库,因此在导入Underscore库文件后,才导入Backbone主框架文件。

  比如说:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title>daomul for Axiba</title>
 5 </head>
 6 <body>
 7     <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
 8     <script src="js/underscore.js"></script>
 9     <script src="js/backbone.js"></script>
10     <script>
11
12     (function($){
13         //Backbone通过extend来扩展实例方法和静态方法:
14         //initialize这个初始化方法,也称构造函数。这个函数会在Model被实例化时调用。
15         var People = Backbone.Model.extend({
16             initialize:function(){
17                 alert(‘hi , i am daomul!‘);
18             }
19         });
20         var person = new People;
21     })(jQuery);
22
23     </script>
24 </body>
25 </html>

二、defaults 和 对象赋值方法get 和 set

  属性在一个Model是以字典(或者类似字典)的方式存在的,设定默认值的方式,只不过是实现了Backbone的defaults这个方法,或者是给defaults进行了赋值。

 1     (function($){
 2
 3         var People = Backbone.Model.extend({
 4             initialize : function(){
 5                 alert(‘come on !‘);
 6             },
 7             defaults:{
 8                 name : ‘ daomul ‘,
 9                 age : ‘ 24 ‘
10             }
11         });
12
13         var person = new People;
14
15         //get获取对象的值
16         alert(person.get(‘age‘));
17
18         //set改变对象的值
19         person.set({phone:‘134133‘,sex:‘男‘});
20         alert(person.get(‘sex‘));
21
22     })(jQuery);

三、对象中的自定义方法

  模型中的自定义方法,可以发现是通过字典的方式来构造的,方法的调用也是可以通过.语法来操作的。

 1     (function($){
 2
 3         var People = Backbone.Model.extend({
 4             initialize: function(){
 5
 6             },
 7             defaults:{
 8                 country : ‘China‘
 9             },
10             myPrivateMethod : function(){
11                 return ‘I \‘m from ‘ + this.get(‘country‘) + ‘ and my name \‘s ‘ + this.get(‘name‘);
12             }
13         });
14
15         var person = new People;
16         person.set({name : ‘Axiba‘});
17         alert(person.myPrivateMethod());
18
19     })(jQuery);

四、绑定监听对象中属性的变化

  通过this.bind绑定监听对象中属性值的变化,改变是通过change:name,也是字典的格式来定义的。

 1 (function($){
 2
 3         var People = Backbone.Model.extend({
 4             initialize:function(){
 5                 alert(‘1‘);
 6                 //绑定监听
 7                 this.bind(‘change:name‘,function(){
 8                      var name = this.get(‘name‘);
 9                      alert(‘oh ,no u change my name to ‘ + name);
10                 });
11             },
12             defaults : {
13                 name : ‘Axiba‘,
14                 age : ‘100‘
15             }
16         });
17
18         var person = new People;
19         person.set({name : ‘Axiba2‘});
20
21     })(jQuery);

五、验证规则以及错误的提示

  通过下面的demo可以看出有三种方式可以触发值改变的验证:

 1     (function($){
 2         var People = Backbone.Model.extend({
 3
 4             initialize:function(){
 5                 this.bind("invalid",function(model,error){
 6                     alert(error);
 7                 });
 8             },
 9             defaults:{
10                 name : ‘Axiba‘,
11                 age : 11
12             },
13             validate:function(attributes){
14
15                 if(attributes.name == ‘‘) {
16                     return "name不能为空!";
17                 }
18             }
19         });
20
21         var person = new People;
22
23         //方法1 :默认set时不进行验证,save时触发验证。根据验证规则,弹出错误提示。
24         //person.set({name : ‘‘});
25         //person.save();
26
27         //方法2 :手动触发验证, set时会触发
28         //person.set({name:‘‘}, {‘validate‘:true});
29
30         //方法3 :添加错误处理也行
31         person.on(‘invalid‘, function(model, error){
32              alert(error);
33         });
34         person.set({name : ‘‘});
35         person.save();
36
37     })(jQuery);*/
时间: 2024-10-25 12:06:07

backBone.js之Model篇 (1) 简单实例的相关文章

Backbone.js之model篇(一)

Backbone.js之model篇(一) Backbone 是一个前端 JS 代码 MVC 框架,它不可取代 Jquery,不可取代现有的 template 库.而是和这些结合起来构建复杂的 web 前端交互应用. Backbone 主要包括 models, collections, views 和 events, controller. (一)model 关于 backbone,最基础的一个东西就是 model,这个东西就像是后端开发中的数据库映射那个 model 一样,也是数据对象的模型,

backbone.js之Model篇 简单总结和深入(2)

一.模型属性的一些操作方法 1.mmodel.get()  获取属性的值 2.mmodel.set('age',5) 更新单个属性的值  mmodel.set({name:'aaa',age:6})  更新多个属性的值  在设置属性值时,如果该属性不存在,会自动创建该属性:同时会以true的形式返回一个模型的引用. 3.mmodel.unset('age')  从模型中删除一个属性 4.mmodel.clear()  从模型中删除所有的属性 5.mmodel.has('age') 检查是否存在某

Backbone之旅——Model篇

Backbone作为前端的MVC框架,把后端的设计思想带到前端,使前端代码更加清晰.可维护性大大提高 Backbone依赖于underscore.js和jquery,所以在使用backbone的时候一定要引入这两个常用的js库,jquery应该算是web前端的标配了吧,undersocre也是一个很通用的库,在nodejs中同样也使用.此处有个坑,三个js库的引用是有顺序的,jquery.underscore.backbone一定要按照这个顺序,并且所有的js要放到body的后面也就是页面的底部

MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js 概念摘录

转自:http://www.cnblogs.com/xishuai/p/mvc-mvp-mvvm-angularjs-knockoutjs-backbonejs-reactjs-emberjs-avalonjs.html MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是将 M 和 V 的实现代码分离,从而使同一个程序可以使用不同的表现形式. 交互方式(所有通信都是单向的): View 传送指令到 Contro

Backbone.js 中使用 Model

前面几篇 Backbone.js 的例子中有使用到 template, 及数据的填充,其实这已经很接近 Model 了.现在来学习怎么创建自己的 Model 类,并简单的使用.Backbone.js 中 Model 会涉及到很多的概念,如 Model 的初始化,默认值,属性的读写,属性值改变的监听,数据渲染,校验,以及与服务端的数据同步等. 本文不打算讲前面大部分的内容,最初思考的一个脉络是怎么把 Model 引入进来,所以线索会是 建立 Model 类 -> 初始化 Model 实例 ->

【转】Backbone.js学习笔记(一)

文章转自: http://segmentfault.com/a/1190000002386651 基本概念 前言 昨天开始学Backbone.js,写篇笔记记录一下吧,一直对MVC模式挺好奇的,也对js中MVC的开创鼻祖怀着敬畏之心,唉,不说了,好虚伪,以下是我的学习心得和笔记. 给大家看一下全球js库和框架的使用比例:这是通过搜索引擎抓取script标签统计而来的数据,可信度相当高啊,另外,不要迷恋Angular.js,Avalon.js还是挺不错的. 什么是Backbone.js? Back

Backbone.js简单入门范例

11年刚开始用前端MVC框架时写过一篇文章,当时Knockout和Backbone都在用,但之后的项目全是在用Backbone,主要因为它简单.灵活,无论是富JS应用还是企业网站都用得上.相比React针对View和单向数据流的设计,Backbone更能体现MVC的思路,所以针对它写一篇入门范例,说明如下: 1. 结构上分4节,介绍Model/View/Collection,实现从远程获取数据显示到表格且修改删除:2. 名为“范例”,所以代码为主,每节的第1段代码都是完整代码,复制粘贴就能用,每

js判断登陆用户名及密码是否为空的简单实例

js判断登陆用户名及密码是否为空的简单实例 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <script type="text/javascript"> // 验证输入不为空的脚本代码 function checkForm(form) { if(form.username.value == "") { alert("用户名不能为空!"); form.username.focus(); return

JS获取select的value和text值的简单实例

本篇文章主要是对JS获取select的value和text值的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 代码如下: <select id = "cityList" > <select id = "selectId" > <option value = "0">第0个</option> </select> <script> var selectObj =