判断一下任务的状态,如果是完成的任务,可以在任务项目的上面,添加一个额外的 css 类,在这个 css 类里,可以去定义完成的任务的样式。比如,把文字的颜色变成浅友色,并且在文字上面添加一条删除线。这些样式,已经在应用的样式表里定义好了,放在了一个叫 .completed 的 css 类里面。下面,我们要做的就是把这个类添加到是完成的状态的任务项目上去。

要解决的问题

  1. 怎么样得到模型的属性的值。
  2. 怎么样为模型添加合适的 css 类。
  3. 怎么样在任务模型的完成状态发生变化时,立即更新任务项目的显示。

得到模型的属性的值,用的就是模型的 get 方法。这里我们要得到的是模型的 completed 属性的值,如果它的值是 ture ,就在这个模型上面去添加一个 .completed 类,如果是 false ,如果在任务项目上有 .completed 类,就从任务项目上面去掉这个 .completed 的 css 类。

jQuery 的 toggleClass 方法,可以为元素添加或者删除掉指定的 css 类。这个方法支持一个开关的参数,这个开关如果返回的是 true ,就在指定的元素上面去添加指定的 css 类,如果开关返回的是 false,就从元素上面去掉指定的 css 类。

当模型的值发生变化的时候,会触发一个 change 事件,在模型的视图里面,我们可以去监听这个 change 事件,当模型的值发生变化以后,立即去执行模型视图的渲染方法,更新一下模型视图的显示。

模型的视图

理解了上面这些东西以后,打开模型的视图,js/Views/TodoView.js ,在这个视图的 render 方法里,添加下面这行代码:

this.$el.toggleClass('completed', this.model.get('completed'));

this.$el,表示要使用其它的方法去处理当前视图的 el 属性里的东西,$el 就是 $(view.el) 的简写形式,后面我们用到了 toggleClass 这个方法,这是来自 jQuery 的一个方法。在这个方法里面,第一个参数就是要添加或删除的 css 类。第二个参数是一个开关,this.model.get ,使用与当前视图相关的模型的 get 方法去得到 completed 这个属性的值,这样,如果它返回 ture ,也就是如果任务是完成的状态,就去添加一个 .completed 这个类,如果返回的是 flase ,就从任务项目上面去掉这个 .completed 类。

发生变化时立即反应

勾选切换任务状态的对号,会改变任务模型的值,这时在模型上就会触发一个 change 事件,在模型的视图里面,我们可以去监听这个事件,发生这个事件以后,再去执行一下模型的 render 方法,更新一下任务项目的显示。在模型视图里面,去添加一个 initialize 方法,在它里面,可以使用视图的 listenTo 去监听事件:

    // 初始化
initialize: function() {
this.listenTo(this.model, 'change', this.render);
},

练习

现在,可以到浏览器去试试了,用 Chrome 浏览器打开应用的主页 index.html 。然后点击任务项目左边的对号,切换一下任务项目的完成状态,你应该会立即看到显示的变化。

JavaScript 应用开发 #5:为完成的任务添加样式源码搜藏网整理,转载请注明出处http://www.codesocang.com/jiaocheng/js/9783.html

JavaScript 应用开发 #5:为完成的任务添加样式的更多相关文章

  1. Javascript模块化开发,使用模块化脚本加载工具RequireJS,提高你代码的速度和质量。

    随着前端JavaScript代码越来越重,如何组织JavaScript代码变得非常重要,好的组织方式,可以让别人和自己很好的理解代码,也便于维护和测试.模块化是一种非常好的代码组织方式,本文试着对Ja ...

  2. Javascript 模块化开发上线解决方案

    最近又换部门了,好频繁地说...于是把这段时间搞的小工具们简单整理了一下,作了一个小的总结.这次用一个简单业务demo来向大家介绍一下Javascript模块化开发的方式和自动化合并压缩的一些自己的处 ...

  3. JavaScript模块化开发整理

    在网上已经有很多关于模块化开发的文章了,这里还是按照自己的理解来整理一下. 随着项目文件的越来越大和需求的越来越贴近现实(我发现现在客户不如:一个领导说我要审批你们报上来的资料,系统发布以后用的还不错 ...

  4. Javascript模块化开发-轻巧自制

    Javascript模块化开发-轻巧自制 一.前言现在javascript的流行,前端的代码越来越复杂,所以我们需要软件工程的思想来开发前端.模块化是必不可少的,这样不仅能够提高代码的可维护性.可扩展 ...

  5. android之Java+html+javascript混合开发

    android开发,除了使用原生态的开发方式之外,还可以使用java+html+javascript混合开发的方式来开发,这样可以节省大量的开发时间,同时还可以使不同设备的用户获得相同的用户体验.好了 ...

  6. JavaScript 应用开发 #4:切换任务的完成状态

    在勾选了任务项目左边的对号(复选框)以后,会将任务的状态标记为已完成,取消勾选的话,又会把任务的状态标记为未完成.所以, 我们需要一个可以切换任务完成状态的方法.在任务模型里面,表示任务状态的属性是 ...

  7. JavaScript 应用开发 #3:应用的主视图

    目前为止,我们已经在应用里面,创建了表示数据的模型,表示数据列表的集合,组织模型显示的视图与模板.下面, 我们要想办法,去把模型的列表显示在应用的界面上.这样我们就可以再去为应用创建一个主要的视图,用 ...

  8. JavaScript 应用开发 #2:视图与模板

    在用 Backbone 开发的 JavaScript 应用里面,除了模型与集合以外,另一个重要的部分就是视图,英文是 View .在视图里面,我们可以去监听在页面上发生的事件,还有与视图相关的模型和集 ...

  9. JavaScript 应用开发 #1:理解模型与集合

    在 < Backbone 应用实例 > 这个课程里面,我们会一起用 JavaScript 做一个小应用,它可以管理任务列表,应用可以创建新任务,编辑还有删除任务等等.这个实例非常好的演示了 ...

随机推荐

  1. 前端性能优化(三)——传统 JavaScript 优化的误区

    注:本文是纯技术探讨文,无图无笑点,希望您喜欢 一.前言 软件行业极其缺乏前端人才这是圈内的共识了,某种程度上讲,同等水平前端的工资都要比后端高上不少,而圈内的另一项共识则是--网页是公司的脸面! 几 ...

  2. 【UVA 1411】 Ants (KM)

    Young naturalist Bill studies ants in school. His ants feed onplant-louses that live on apple trees. ...

  3. ANDROID_MARS学习笔记_S02_015_Gson解析json串为对象集合

    package com.example.s02_e12_json3; import java.lang.reflect.Type; import java.util.Iterator; import ...

  4. ANDROID_MARS学习笔记_S04_003_用HttpClent发http请求

    一.代码 1.xml(1)activity_main.xml <TextView android:layout_width="wrap_content" android:la ...

  5. 最全的微软msdn原版windows系统镜像和office下载地址集锦

    随着windows的发展,越来越多的人都热衷于微软的原版系统下载了,相比之前的版本比如winxp版本,windows vista/win7/win8/win8.1/win10后来的版本在安装方面也比较 ...

  6. 【Xamarin挖墙脚系列:如何从一个Apk程序转化为Xamarin的程序】

    原文:[Xamarin挖墙脚系列:如何从一个Apk程序转化为Xamarin的程序] 工欲善其事必先利其器:工具下载:http://pan.baidu.com/s/1skxjwgH 接下来,我用个小的应 ...

  7. android中handler中 obtainmessge与New message区别

    obtainmessage()是从消息池中拿来一个msg 不需要另开辟空间new new需要重新申请,效率低,obtianmessage可以循环利用: //use Handler.obtainMess ...

  8. Linux数据管理——文件锁定

    一.什么是文件锁定 对于锁这个字,大家一定不会陌生,因为我们生活中就存在着大量的锁,它们各个方面发挥着它的作用,现在世界中的锁的功能都可归结为一句话,就是阻止某些人做某些事,例如,门锁就是阻止除了屋主 ...

  9. ☀【JS组织】pageA_init, pageB_init

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  10. team geek

    1. 转载自http://book.douban.com/review/6007037/,版权归丸子(^.^)v所有. New Google employees (we call “Nooglers” ...