在初步学习完angular js之后,开始尝试做party_bid的第一张卡片。这个项目用到了敏捷开发的故事卡,用到了angular js,用到了yeoman和rubymine,这些对我来讲是一个全新的领域,让我都很感兴趣。
party_bid是一个移动应用, party_bid来源于百老汇,是一个竞价游戏。游戏分为四个部分,创建活动——活动报名——组织竞价——竞价分析,最终从竞价者中选出竞价最低且不重复作为获胜者。其中主持人手机安装有这个App,主持人通过该App创建一个可自定义名称的活动,活动创建完毕后,参与竞价者可通过自己的手机发送特定格式的短信来参与活动报名。报名结束后,主持人可以在该活动下,发起多个竞价。在每一个竞价中,活动报名者通过发送特定格式的短信,报出自己的竞价,竞价最低且不重复的报名者即可竞价成功!
1.首先建立一个新的文件夹。我的文件夹名为partyBid,进入文件夹。在终端输入下面的代码。
- mkdir party_bid //创建文件夹party_bid
- cd party_bid //进入文件夹
2.用yeoman在party_bid文件夹下面生成一个新的工程。接着上面的代码,输入下面的代码。我的工程名字叫party_bid。建议在网速比较好的地方生成,生成速度会比较快,也不容易出现error。
- yo Angular //生成工程文件
提醒 Would you like to use Sass (with Compass)? (Y/n) n
提醒 Would you like to include Bootstrap? (Y/n) y
其余按Enter键。
3.工程文件生成后,在相应文件夹下用终端输入下面代码,启动服务器。至此,准备活动全部完成,可以正式开始编写程序。
- grunt server
4.首先先要把要引用的所有css文件引入index中。因为我们是使用了样式库,所以要引人如下样式:
- <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
- <link href="css/font-awesome.min.css" rel="stylesheet" media="screen">
- <link href="css/android.css" rel="stylesheet" media="screen">
href是指定的路径,是css文件的位置;rel是relation。
其次还要引入相对应使用的全部js文件。如下:
- <script src="bower_components/jquery/dist/jquery.js"></script>
- <script src="bower_components/angular/angular.js"></script>
- <script src="scripts/route.js"></script>
- <script src="scripts/controllers/main.js"></script
5.接下来就是要配置路由器实现页面和控制器之间的联系。部分代码如下:
- $routeProvider
- .when('/', {
- templateUrl: 'views/main.html',
- controller: 'MainCtrl'
- })
- .when('/create_activity', {
- templateUrl: 'views/create_activity.html',
- controller: 'CreateActivityCtrl'
- })
我是通过在main.html页面判断是否活动列表中是否存在活动而进行页面的跳转是跳转到activity_list还是create_activity,但是main页面并没有展示内容。
6.需求要求点击按钮实现页面的跳转。我使用的方式的ng-click,在对应的控制器中实现方法。举个列子:从活动报名的页面点击返回按钮跳转到活动列表中。
- <button class="btn btn-primary header-left" ng-click="go_list()">返回</button>
- $scope.go_list = function () {
- $location.path('/activity_list')
- }
7. 在活动列表页面中要求活动排序按照活动创建的顺序输出。我在存储数据时存成数组的形式,这里只需要将数组reverse之后遍历输出就可以了。这里也使用了ng-repeat方法。在localStorage中的数据传到name中,list对name进行遍历后把结果输出。
- <li ng-repeat='list in name'>
- {{list}} //输出遍历结果
下面是在控制器中的代码。首先判断localStorage中是否有活动,如果没有就将数据传到name,对name进行reverse。但是这部分代码感觉还不够好,还需要进一步的修改。
- if(localStorage.length!=0)
- {
- console.log(localStorage.length);
- var name = JSON.parse(localStorage['activity_name']);
- $scope.name = name.reverse();
- }
- else{
- }
8.在create_activity页面中要实现存入活动名称,判断活动名称是否重复以及返回按钮在活动列表中没有活动是不显示的三个功能。在存入活动时使用的方法是JSON.stringify方法,因为这个方法可以直接解析对象。在判断活动名称是否重复时使用的循环,在按钮显示的功能使用的是ng-show的方法。这部分的代码感觉也是不够干净利落,还是需要继续修改完善的。
- <h3>活动名称</h3>
- <p><input type="text" class="input" ng-model="activity_name"></p>
- <button class="btn btn-default btn-lg btn-block" ng-disabled='!activity_name' ng-click="go_sign_up(activity_name)">创建</button>
- <p>{{tips}}</p>
- if (localStorage.length != 0) {
- var storedNames = [];
- storedNames = JSON.parse(localStorage['activity_name']);
- var i = 0;
- for (var n = 0; n<storedNames.length; n++) {
- if (storedNames[n]==temp_act_name) {
- $scope.tips = "活动名称重复";
- i = 1;
- break;
- }
- else {
- }
- }
- if(i==0){
- storedNames.push(temp_act_name); //将活动名称存入数组name
- localStorage['activity_name'] = JSON.stringify(storedNames);
- //将name数组存入localStorage中,key是activity_name
- $location.path('/activity_sign_up');
- }
- else{
- }
- } else {
- var name = [];
- name.push(temp_act_name);
- localStorage['activity_name'] = JSON.stringify(name);
- $location.path('/activity_sign_up');
- }
- }
至此,partyBid的第一张卡片的功能已经大致实现。但是里面还是有很多内容值得我细细思考,认真记录的。其实还是有一个疑问可不可以使用setItem和getItem的方法实现数据的存储和读取的呢?感觉上还是可以的,但是这两种方法哪一种更好呢?希望在下一篇博客中我可以得到结论。
相关推荐
2. **创建第一个AngularJS应用**:通过一个简单的“Hello World”示例,读者可以快速了解AngularJS的基本工作原理,并熟悉其核心概念。 3. **深入理解AngularJS的核心特性**:这部分内容将详细介绍数据绑定、依赖...
入门教程通常会从安装AngularJS开始,然后逐步引导读者创建第一个"Hello, World!"应用。它将详细介绍数据绑定和指令的基本用法,以及如何使用AngularJS进行简单的路由配置。此外,教程还会讲解如何利用$http服务进行...
AngularJS的数据绑定是其核心特性之一,它允许视图(View)和模型(Model)之间的双向通信。在AngularJS中,我们可以使用`{{ }}`双括号语法将模型数据直接展示在视图上,同时,当模型数据发生变化时,视图也会实时...
1. **双向数据绑定**:AngularJS的核心特性之一,使得模型和视图之间自动保持同步。任何一方的改变都会立即反映到另一方。 2. **指令**:AngularJS扩展了HTML,通过自定义属性、元素或类来增加新的功能,如ng-repeat...
本分卷由2345好压(Haozip)生成,请使用2345好压来解压。 ...分卷文件共有以下2个: AngularJS即学即用 (美)夏德瑞 格林 译者 朱磊.haozip01.zip AngularJS即学即用 (美)夏德瑞 格林 译者 朱磊.haozip02.zip
AngularJS是google在维护,其在国外已经十分火热,可是国内的使用情况却有不小的差距,参考文献/网络文章也...这里便将我学习AngularJS写成文档,一方面作为自己学习路程上的记录,另一方面也给有兴趣的同学一些参考。
1. **双向数据绑定**:AngularJS 的核心特性之一是双向数据绑定,它使得模型(model)和视图(view)之间的数据保持同步。任何一方的改变都会立即反映到另一方,大大简化了开发者的工作。 2. **指令系统**:AngularJS ...
1. **数据绑定**:AngularJS 的双向数据绑定是其最具特色的功能之一。这意味着视图(View)和模型(Model)之间的数据会自动保持同步。例如,当你在输入框中输入文本时,模型中的对应值会立即更新,反之亦然。 2. *...
尽管如此,AngularJS仍然是许多大型项目的首选框架之一,拥有庞大的社区支持和丰富的插件生态系统。 #### 八、AngularJS的学习资源 对于希望深入了解AngularJS的开发者来说,《AngularJSServices》是一本不可多得...
1. 数据绑定:这是AngularJS最显著的特性之一,它实现了视图和模型之间的双向绑定,使得UI和数据模型同步更新。 2. 指令:AngularJS通过自定义HTML标签或属性扩展了HTML,这些自定义的元素称为指令,如ng-repeat、ng...
本篇文章将深入探讨如何使用AngularJS来构建名为"MovieCat"的前端网页,以及与之相关的JavaScript开发和CSS技术。 一、AngularJS简介 AngularJS是由Google维护的开源JavaScript框架,它通过MVC(Model-View-...
本资料包是针对AngularJS的学习资源集合,主要包括AngularJS的中文API手册以及一系列的学习书籍PDF,旨在帮助初学者和进阶者更好地理解和掌握这一强大的前端技术。 首先,AngularJS中文API手册是学习过程中的重要...
AngularJS 是一款强大的前端JavaScript框架,由Google维护,主要用于构建单页应用(SPA,Single ..."Hello World"只是AngularJS之旅的第一步,随着学习的深入,你会发现它能帮助你构建出功能强大、响应迅速的Web应用。
AngularJS 是一个 JavaScript框架。它是一个以 JavaScript 编写的库。它可通过 [removed] 标签添加到HTML 页面。 AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML。 AngularJS 是以一个 JavaScript...
angularjs学习需要导入的angular.js
├最新AngularJS开发宝典—第012讲 函数使用方法大小写转换与对象深拷贝.mp4 ├最新AngularJS开发宝典—第013讲 函数使用对象扩充与数据遍历.mp4 ├最新AngularJS开发宝典—第014讲 json数据转换与本地存储及$scope...
版 次:1页 数:348字 数:448000印刷时间:2014-10-1开 本:16开纸 张:胶版纸印 次:1包 装:平装 编辑推荐 由科兹洛夫斯基、达尔文所著的《精通AngularJS》全面系统的介绍了AngularJS框架。AngularJS是Google...
**数据绑定**是AngularJS的核心功能之一,它使得视图和模型之间的同步变得自动化。双向数据绑定使得当模型改变时,视图会自动更新,反之亦然。在AngularJS中,我们使用`ng-model`指令将表单元素与应用模型关联,从而...
双向数据绑定是AngularJS的核心特性之一,它使得模型和视图之间的数据同步变得极其简单。依赖注入机制则允许模块之间松散耦合,提高代码的可测试性和可维护性。指令系统扩展了HTML,使我们可以创建自定义的DOM元素和...