BackboneJs入门学习[04]—Model实践(2)

简介: BackboneJs入门学习[04]—Model实践(2)

BackboneJs入门学习之模块—Model实践(2)

上一篇中,我们介绍了Model中对象的属性和方法,以及常用的change监听事件的使用,这一篇中,我们将进一步介绍Model对象的相关操作。

一、为对象添加验证规则以及错误提示

先看一个示例:

var Man=Backbone.Model.extend({
      initialize:function(){
   },
   defaults:{
         name:'张三',
         age:'10'
         }
    this.bind("invalid",function(model,error){
    alert(error);
invalid:function(attributes){
    if(attributes.name==' '){
    //验证name属性是否为空
      return "name 不能为空!";
}
}
});
var man=new Man;
man.on('invalid',function(model,error){
     alert(error);//添加错误处理
});
//用3种验证方式
man.set({name:' '});//No1. 默认set时不进行验证
man.set({name:''},{'validate':true});//No2 但手动触发验证set时会触发
man.save();//No3. save时触发验证,根据验证规则弹出错误提示,注:save()会将改变的属性发送到服务器, 将立即触发一个"change"事件
});

二、在于服务器进行交互时,对象的保存和获取

首先,在讲解示例前,需要明白一下几点:

  1. 在和服务器(server,下同)交互时,需要为对象定义一个url属性;
  2. 调用save()方法,会post对象的所有属性到server;
  3. 调用fetch()方法,会发送get请求到server端;
  4. 接受的数据和发送的数据均为Json格式;

Ok,了解了以上知识点,我们来讲解下面的示例:

var Man=Backbone.Model.extend({
     url:'/man',
     initialize:function(){
    alert('hello!');
    this.bind("change:name",function(){
           var name=this.get('name');
           alert('你改变了name属性值为:'+name);
   });
   this.bind('error',function(model,error){
              alert(error);
   });
   },
   defaults:{
           name:'张三',
           age:'10'
 },
 validate:function(attributes){
   if(attributes.name=""){
   alert("name属性不能为空!");
 }
}
});
var man=new Man;
man.set({name:'李四'});
man.save();//使用save时会触发Post到模型对应的url,数据格式使用Json,如{"name":"李四","age":"10"}
//例外,从server获取数据使用的方法,这里用到——fetch([options]),如下所示:
var man1=new Man;
//fetch有带参数和不带参数的方式,写法上不同
man1.fetch();
//No1.不带参数的方式,会发送get请求到model的url中 ,在server端可通过判断是get还是post方式,来进行对应的操作
man1.fetch({url:'/getmans/'});
//No2.带参数的方式,会发送get请求到/getmans/这个url中,server会返回Json格式的结果
但是,接受server返回的数据方法应该是这样的:
man1.fetch({url:'/man/',success:function(model,response){
     alert('success');
     alert(model.get('name'));
 },error:function(){
   alert('error');
}
)};//即在成功获取数据时与出现错误时,均有提示出现

这里要说明一下关于Backbone中Model模块的url与urlRoot的区别:

在Backbone的官方文档中,分别给出如下解释: url:返回模型资源在服务器上位置的相对 URL 。

urlRoot:通过指定 urlRoot 来设置生成基于模型 id 的 url。

示例:
var Book = Backbone.Model.extend({urlRoot : '/books'});
> var solaris = new Book({id: "1083-lem-solaris"});
> alert(solaris.url());
> //输出:/books/1083-lem-solaris
即请求的url地址格式为:/baseurl/[model.id]

小结:区别于发送CRUD参数时,当发送Put和Delete请求时,如果设置了urlRoot,那么请求的url地址就变成了/baseurl/[model.id]格式。

Ok,关于Model的知识点,我们就介绍到这里!欢迎你留言,一起交流,一起进步!下一篇中,我们将讲解一下Backbone中的Sync方法。

每篇一语:

Stupid is as Stupid does! 我们再接再厉!

笨鸟接着飞!努力奔跑!


相关文章
|
安全 中间件 数据安全/隐私保护
中间件的定义,包括它的功能、应用场景以及优势。
中间件是位于操作系统和应用软件间的系统软件,提供数据交换、应用集成、流程管理和安全保障等服务。常用于分布式系统、微服务架构和企业级应用,实现高效、低耦合的系统运行。其优势在于降低开发成本、提升系统性能、简化扩展和维护。中间件推动了软件技术的发展和创新。
2401 1
|
7月前
|
存储 缓存 人工智能
Mooncake 最新进展:SGLang 和 LMCache 基于 Mooncake 实现高效 PD 分离框架
Mooncake 的架构设计兼具高性能和灵活性,为未来的扩展性和生态建设奠定了坚实基础。
|
Java 数据库连接 PHP
探索PHP的世界:从基础到进阶
本文将带你走进PHP的奇妙世界,从基础语法到高级应用,我们将一步步探索这个强大而灵活的编程语言。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和深入的理解。让我们一起开始这段旅程吧!
|
Java 测试技术 开发者
探索软件测试的多维度:从单元到系统,再到性能测试
本文深入探讨了软件测试的多个关键维度,包括单元测试、集成测试、系统测试以及性能测试。通过分析每个阶段的目标和方法,本文旨在帮助读者理解如何构建一个全面的测试策略,确保软件产品的质量与性能。我们将通过具体案例和数据来揭示不同测试阶段的重要性及其在软件开发生命周期中的作用。
357 17
|
存储 安全 JavaScript
解释 XSS 攻击及其预防措施
【8月更文挑战第31天】
1448 0
|
Kubernetes Linux Docker
Kubernetes详解(四)——基于kubeadm的Kubernetes部署
Kubernetes详解(四)——基于kubeadm的Kubernetes部署
385 2
|
SQL 存储 数据管理
掌握SQL Server Integration Services (SSIS)精髓:从零开始构建自动化数据提取、转换与加载(ETL)流程,实现高效数据迁移与集成——轻松上手SSIS打造企业级数据管理利器
【8月更文挑战第31天】SQL Server Integration Services (SSIS) 是 Microsoft 提供的企业级数据集成平台,用于高效完成数据提取、转换和加载(ETL)任务。本文通过简单示例介绍 SSIS 的基本使用方法,包括创建数据包、配置数据源与目标以及自动化执行流程。首先确保安装了 SQL Server Data Tools (SSDT),然后在 Visual Studio 中创建新的 SSIS 项目,通过添加控制流和数据流组件,实现从 CSV 文件到 SQL Server 数据库的数据迁移。
4444 0
|
安全 测试技术 Shell
干货 | 读懂 Appium 日志,让测试效率翻倍!
干货 | 读懂 Appium 日志,让测试效率翻倍!
|
存储 新零售 Cloud Native
阿里宜搭发布专有云版本,基于云原生的应用构建PaaS平台
宜搭是阿里巴巴企业智能事业部自研的0代码应用搭建平台,传统模式下需要2周才能开发完成的表单流程类应用,用宜搭2小时就能完成。
阿里宜搭发布专有云版本,基于云原生的应用构建PaaS平台