`
d0ln
  • 浏览: 2796 次
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

AngularJS之学写partyBid第三张卡片

 
阅读更多

1.模拟发短信 

JavaScript代码  收藏代码
  1. notify_message_received({"messages": [  
  2.  {"create_date""Tue Jan 15 15:28:44 格林尼治标准时间+0800 2013""message""bm1""phone""181717833"}  
  3.  ]})  


2.处理短信: 
①去空格:

JavaScript代码 收藏代码
  1. var message = json_message.messages[0].message.replace(/\s/g, "");  


②判断是否以bm开头:

JavaScript代码  收藏代码
  1. message.search(/bm|bm/i) == 0  


③在sms.js页面调用sign_up_page相对应的Controller里的函数,只要在页面上给一个ID,然后在sms.js上写以下内容: 

Java代码  收藏代码
  1. var sign_up_view_element = document.getElementById("sign_up_page")  
  2. if(sign_up_view_element) {  
  3.    var scope = angular.element(sign_up_view_element).scope()  
  4.    scope.$apply(function() {  
  5.    scope.apply_num()  
  6.    })  
  7. }  


3.在正则表达式中"或者"用"|"表示 
         "所有"用"g"表示 
         "不区分大小写"用"i"表示 
4.正在报名的活动对应的活动列表的颜色为黄色,可以巧妙的用class的命名来解决
 

Java代码  收藏代码
  1. class="{{activity.status}}"  

 

Java代码  收藏代码
  1. .start{  
  2.     background: yellow !important;  
  3. }//一定要注意!important,可能原来的css中就有颜色的控制,这时候如不加此句,则颜色可能会显示不出来  

 

 

      party_bid 的第二张卡和第三张卡都涉及到接受信息和回复信息,并对收到的信息进行处理。这里我把两张卡合并起来一起总结。

 

      1.首先是对接收到的信息进行处理,信息分为报名和竞价,报名是以“bm”开头的信息,竞价是“jj”开头。我们要处理的主要是它们后面的信息。这里需要用到正则表达式:

 

var message = json_message.messages[0].message.replace(/\s/g, "");
message.search(/jj/i)
message.substr(2)
 

 

讲讲这三个语句的意思。

      replace()和search()是String支持4种使用正则表达式方法的两种,replace()方法用以执行检索与替换操作,search()用来执行检索。

      例如:text.replace(/javascript/gi,"JavaScript");        //将text中所有不区分大小写的javascipt替换为大小写正确的JavaScript。

      在正则表达式中”\s“是任何Unicode空白符的意思(这里注意一下大小写,”\S“是任何非Unicode空白符的字符),“/g”则是全局的意思,所以json_message.messages[0].message.replace(/\s/g, "")是将message中的所有空格都替换成空字符串,也就是去除空格的意思,为什么要去除空格呢?这都是为下一句判断做准备。

先来看一下下面语句:

 

"javascript".search(/script/i)    //这个语句的返回值为4
"bm".search(/bm/i)   //这个语句的返回值为0
"ddBmdd".search(/bm/i)      //这个语句的返回值为2
"ddbdm".search(/bm/i)     //这个语句的返回值为-1
 

 

      看到这里应该懂了,search()可以返回找到字符串前面字符的个数,如果找不到则会返回-1,经过replace()后,获取的信息所有的空格都去除了,所以返回值肯定是0,用这个语句进行判断是否是报名短信。

最后是substr(),这里的message.substr(2)是去除message的前两位,也就是为了处理短信,去除bm获取后面的人名。

 

 

     2.在讲信息显示前,这里先说一下关于$scope。

     $scope是一个把html连接到javaScrip上的对象。在$scope对象里,我们可以存储数据,也可以存储在html上运行的函数。这里也可以看一下$scope里存储的东西,

console.log($scope);    //将$scope里的内容打印出来

我们可以利用$scope实现两者之间的信息传递。

我们可以在js中写入$scope.name = "moneyinto"

然后在对应的html中任何地方可以访问name,通过表达式{{}},(这就是数据的绑定)

写成这样{{name}}

这样我们的页面上就会显示 moneyinto

 

 

      3.接着是对处理完的信息进行显示,和计数,通常我们接受到信息处理后,页面上显示的信息没有增加,其实已经有了刚处理完的信息,可以通过console.log();打印出来看看。这时手动刷新一下页面信息便可以显示出来,但是总不能让用户一直手动刷新吧,这里我们需要用到$apply()将代码包起来。

先看一段代码:

<div ng:app ng-controller="Ctrl">{{message}}</div>

 

functionCtrl($scope) {
  $scope.message ="hello world!";    
  setTimeout(function () {
    $scope.message ="moneyinto";
  }, 3000); 
}

执行上面的代码后,页面会显示“hello world!”,

然后3秒之后,message的值发生变化,按理说这时页面上应该显示“moneyinto”,

执行console.log(message);也会发现message的值已经变化了,

但是实际情况是页面上还是显示的“hello world!”。

angular JS没有觉察到数据的更新。

 

这里就需要用$apply将上面的代码包起来:

functionCtrl($scope) {
  $scope.message ="hello world!"; 
  setTimeout(function () {
    $scope.$apply(function () {
       $scope.message ="moneyinto";
      });
  }, 3000); 
}

 这样页面上会显示“hello world!”,三秒之后会显示“moneyinto”,数据的更新被angular JS觉察到了。

 

接下来看一下报名信息存储后的一段代码:

var signUp = document.getElementById("signUp");  //获取报名页面的id
if (signUp) {
    var scope = angular.element(signUp).scope();   
        //通过id找到对应的页面获取$scope
    scope.$apply(function () {   //使用$apply()将报名页面的refresh方法包起来
    scope.refresh();
    });
}

       在报名页面对应的js文件中写好refresh()的方法,这样每当我们在接受到信息处理完存储到本地的话就会调用以下refresh()执行一遍,这样页面的数据就会自动及时更新了。

 

 

      4.ng常用小结

重复:ng-repeat

<div>
   <ul>
       <li ng-repeat = "activity in activities">  
           <h2>{{activity.name}}</h2>
       </li>    
   </ul>
</div>

 

 
var activities = [{"name":1},{"name":2},{"name":3}];
$scope.activities = activities;
      通常我们需要将一组重复的数据逐条显示在页面上时,会用到ng-repeat,如上进行数据绑定,然后通过$scope传值,将数组的值显示到页面。
显示:ng-show
       ng-show = "true"时显示标签内容,ng-show = "false"时不显示标签内容。
可点与不可点:ng-disabled
       ng-disabled = "true"时不可点,反之可点。
点击触发事件:ng-click
<button ng-click = "go_to_home()">主页</button>
 
$scope.go_to_home = function(){
    $location.path('home');
}
      当点击button按钮,就会触发事件,调用go_to_home()这个写在js里的方法。
      以上四个是现在做party_bid经常用到的,以后继续积累,总结。

 

分享到:
评论

相关推荐

    《AngularJS即学即用》【书本源码下载】

    2. **创建第一个AngularJS应用**:通过一个简单的“Hello World”示例,读者可以快速了解AngularJS的基本工作原理,并熟悉其核心概念。 3. **深入理解AngularJS的核心特性**:这部分内容将详细介绍数据绑定、依赖...

    angularJS_学习资料

    3. **依赖注入(Dependency Injection)**: AngularJS 自带的依赖注入系统可以方便地管理对象之间的依赖关系,使代码更加模块化和可测试。 4. **服务(Services)**: 服务是可复用的组件,如$http用于发送HTTP请求...

    AngularJS学习手册 源代码

    AngularJS的数据绑定是其核心特性之一,它允许视图(View)和模型(Model)之间的双向通信。在AngularJS中,我们可以使用`{{ }}`双括号语法将模型数据直接展示在视图上,同时,当模型数据发生变化时,视图也会实时...

    AngularJS即学即用 (美)夏德瑞 格林 译者 朱磊.haozip02.zip

    本分卷由2345好压(Haozip)生成,请使用2345好压来解压。 ...分卷文件共有以下2个: AngularJS即学即用 (美)夏德瑞 格林 译者 朱磊.haozip01.zip AngularJS即学即用 (美)夏德瑞 格林 译者 朱磊.haozip02.zip

    angularJS权威学习指南手册

    1. **双向数据绑定**:AngularJS的核心特性之一,使得模型和视图之间自动保持同步。任何一方的改变都会立即反映到另一方。 2. **指令**:AngularJS扩展了HTML,通过自定义属性、元素或类来增加新的功能,如ng-repeat...

    AngularJS学习

    AngularJS是google在维护,其在国外已经十分火热,可是国内的使用情况却有不小的差距,参考文献/网络文章也...这里便将我学习AngularJS写成文档,一方面作为自己学习路程上的记录,另一方面也给有兴趣的同学一些参考。

    AngularJS学习 chm 文件

    1. **双向数据绑定**:AngularJS 的核心特性之一是双向数据绑定,它使得模型(model)和视图(view)之间的数据保持同步。任何一方的改变都会立即反映到另一方,大大简化了开发者的工作。 2. **指令系统**:AngularJS ...

    AngularJs入门学习实例

    3. **控制器**:在AngularJS中,控制器是一个JavaScript函数,负责处理视图和模型之间的交互。你可以通过ng-controller指令将控制器附加到HTML元素上。 4. **服务**:AngularJS的服务提供了一种共享代码的方式,...

    AngularJS 学习资料

    #### 三、AngularJS服务类型 - **工厂(Factory)**:工厂是一种常用的模式,用于创建对象实例,通常包含复杂的逻辑。 - **服务(Service)**:服务是封装特定任务或一组任务的对象,可以被多个控制器共享。 - **提供商...

    angularJS学习资料总结

    1. 数据绑定:这是AngularJS最显著的特性之一,它实现了视图和模型之间的双向绑定,使得UI和数据模型同步更新。 2. 指令:AngularJS通过自定义HTML标签或属性扩展了HTML,这些自定义的元素称为指令,如ng-repeat、ng...

    angularjs学习资料

    3. **实战篇**:通过实际项目案例,教你如何在实际工作中运用AngularJS,可能包括与后端API的交互、表单验证、异常处理、测试驱动开发等内容。 4. **最新版更新**:如果你的资料包含AngularJS的最新版本(如...

    AngularJS 之Hello World篇

    AngularJS 是一款强大的前端JavaScript框架,由Google维护,主要用于构建单页应用(SPA,Single ..."Hello World"只是AngularJS之旅的第一步,随着学习的深入,你会发现它能帮助你构建出功能强大、响应迅速的Web应用。

    angularJs学习文档

    AngularJS 是一个 JavaScript框架。它是一个以 JavaScript 编写的库。它可通过 [removed] 标签添加到HTML 页面。 AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML。 AngularJS 是以一个 JavaScript...

    Mastering Web Application Development with AngularJS

     第三方JavaScript库  BootstrapCSS  2.2 构建系统  构建系统准则  自动化所有事情  尽早报错,清晰报错  不同的工作流,不同的命令  构建脚本同样是代码  工具  Gruntjs  测试库与工具  ...

    MovieCat用angularjs写的一个前端网页

    本篇文章将深入探讨如何使用AngularJS来构建名为"MovieCat"的前端网页,以及与之相关的JavaScript开发和CSS技术。 一、AngularJS简介 AngularJS是由Google维护的开源JavaScript框架,它通过MVC(Model-View-...

    angularjs学习需要导入的angular.js

    angularjs学习需要导入的angular.js

    AngularJS学习手册|Angular手册下载

    **数据绑定**是AngularJS的核心功能之一,它使得视图和模型之间的同步变得自动化。双向数据绑定使得当模型改变时,视图会自动更新,反之亦然。在AngularJS中,我们使用`ng-model`指令将表单元素与应用模型关联,从而...

    AngularJS 高级程序设计编程学习代码

    AngularJS的核心理念之一就是模块化,它允许我们将应用拆分为多个可重用的模块,每个模块负责特定的功能。`ngModule`指令用于定义模块,通过`.module()`方法创建。模块可以包含控制器、服务、指令、过滤器等组件,...

    Angularjs 合集 Angularjs 合集

    这个合集包含了三本书籍,分别是《AngularJS by Example》、《AngularJS Web Application Development Cookbook》以及《Apress.Pro.AngularJS》,它们分别从不同的角度深入探讨了AngularJS的使用和开发。 ...

Global site tag (gtag.js) - Google Analytics