使用Yeoman搭建 AngularJS 应用 (8) —— 让我们搭建一个网页应用
原文地址:http://yeoman.io/codelab/write-app.html
创建一个新的模板来显示一个todo的列表
打开views/main.html
为了从一个干净的模板开始,删除main.html中div中所有的元素 ,并且把class属性“jumbotron”改成"container"。
现在main.html现在如下图所示
- <div class="container">
- </div>
打开scritps/controllers/main.js
修改已有的Angular控制器,添加一个todos来代替awesomeThings
- 'use strict';
- angular.module('mytodoApp')
- .controller('MainCtrl', function ($scope) {
- $scope.todos = ['Item 1', 'Item 2', 'Item 3'];
- });
之后修改我们的视图(main.html)来输出我们的todos内容
- <div class="container">
- <h2>My todos</h2>
- <p class="form-group" ng-repeat="todo in todos">
- <input type="text" ng-model="todo" class="form-control">
- </p>
- </div>
这个ng-repeat属性是一个Angular指令,可以实例化集合中的每一个元素。
在我们的例子中,每个段落元素和内容通过ng-repeat被转换为虚拟的占位符。对每一个todos元素,Angular将会输出一个新的<p><input></p>的html块。
这个ng-model属性是另一个Angular指令,对input,select,textarea有效,并且用户指令会显示一个双向绑定。在我们的例子中,它存在与字块input节点中。
让我们看看ng-repeat和ng-model在浏览器里的显示
手动更新$scope.todos的内容
- $scope.todos = ['Item 1', 'Item 2', 'Item 3', 'Item 4'];
由于实时读取功能,你将看到这些列表
手动删除第四个元素,再看看浏览器的内容
添加一个todo
让我们为用户提供一个添加todo的方法
更改main.html,在<h2>和<p>添加一个<form>元素,你的main.html像下面这样。
- <div class="container">
- <h2>My todos</h2>
- <!-- Todos input -->
- <form role="form" ng-submit="addTodo()">
- <div class="row">
- <div class="input-group">
- <input type="text" ng-model="todo" placeholder="What needs to be done?" class="form-control">
- <span class="input-group-btn">
- <input type="submit" class="btn btn-primary" value="Add">
- </span>
- </div>
- </div>
- </form>
- <!-- Todos list -->
- <p class="form-group" ng-repeat="todo in todos">
- <input type="text" ng-model="todo" class="form-control">
- </p>
- </div>
这会添加一个带有提交按钮的form元素,ng-submit是另一个Angular指令。返回你的浏览器,这个界面会如下显示
如果你现在点击Add按钮,什么事情都不会发生,让我们来修改他
ng-submit绑定Angular表达式来提交form的事件,如果没有实践属性添加到form中,它会阻止默认的浏览器行为。在我们的例子中,我们会添加一个Angular表达式,addTodo()
下面的addTodo()方法将新的todo元素添加到todos列表中,然后清除输入栏的字段
- $scope.addTodo = function () {
- $scope.todos.push($scope.todo);
- $scope.todo = '';
- };
在main.js中添加addTodo()方法,并且添加MainCtrl控制器,你的控制器代码如下所示
- 'use strict';
- angular.module('mytodoApp')
- .controller('MainCtrl', function ($scope) {
- $scope.todos = ['Item 1', 'Item 2', 'Item 3'];
- $scope.addTodo = function () {
- $scope.todos.push($scope.todo);
- $scope.todo = '';
- };
- });
在浏览器看一下应用程序
删除一个todo
现在添加一个删除todo的方法,我们需要在每个元素后添加一个新的remove按钮。
让我们打开main.html,在ng-repeat指令中添加一个按钮。为了漂亮的展示输入框和删除按钮,改变class内容从"form-group"为"input-group"。
之前的标记
- <!-- Todos list -->
- <p class="form-group" ng-repeat="todo in todos">
- <input type="text" ng-model="todo" class="form-control">
- </p>
新的标记
- <!-- Todos list -->
- <p class="input-group" ng-repeat="todo in todos">
- <input type="text" ng-model="todo" class="form-control">
- <span class="input-group-btn">
- <button class="btn btn-danger" ng-click="removeTodo($index)" aria-label="Remove">X</button>
- </span>
- </p>
再看看你的浏览器,你的todo应用看起来如下
我们看一下上面的Angular指令,当一个元素被点击后,ng-click会允许用户的行为。在这种情况下,我们调用removeTodo()方法并且传输$index给方法。
$index值将会获取当前todo元素的的ng-repeat元素中的元素。
现在在控制器中添加,删除todo的逻辑。下面的removeTodo()方法从元素列表中删除相应元素,使用JavaScript中的splice()方法删除$index相应的值
- $scope.removeTodo = function (index) {
- $scope.todos.splice(index, );
- };
新的main.js如下
- 'use strict';
- angular.module('mytodoApp')
- .controller('MainCtrl', function ($scope) {
- $scope.todos = ['Item 1', 'Item 2', 'Item 3'];
- $scope.addTodo = function () {
- $scope.todos.push($scope.todo);
- $scope.todo = '';
- };
- $scope.removeTodo = function (index) {
- $scope.todos.splice(index, );
- };
- });
返回浏览器,你能点击X按钮删除相应的元素
使用Yeoman搭建 AngularJS 应用 (8) —— 让我们搭建一个网页应用的更多相关文章
- 使用Yeoman搭建 AngularJS 应用 (12) —— 让我们搭建一个网页应用
原文地址:http://yeoman.io/codelab/local-storage.html 安装Bower程序包 我们使用另一个Angular模块,"angular-local-sto ...
- 使用Yeoman搭建 AngularJS 应用 (5) —— 让我们搭建一个网页应用
原文地址:http://yeoman.io/codelab/scaffold-app.html 基架 (Scaffolding) 在Yeoman中的意思是为基于你特殊的配置需求,为网站程序生成文件的工 ...
- 使用Yeoman搭建 AngularJS 应用 (4) —— 让我们搭建一个网页应用
在开发一个的网页传统工作流程中,你需要大量的时间去设置引用文件,下载依赖文件,并且手动的创建网页文件结构.Yeoman生成器将会帮助你完成这些.让我们安装一个AngularJS项目的生成器. 安装An ...
- 使用Yeoman搭建 AngularJS 应用 (2) —— 让我们搭建一个网页应用
原文地址:http://yeoman.io/codelab/index.html 使用Yeoman搭建简单的应用 今天将会搭建一个简单的网页程序.你将可以添加,删除,拖拽和保存. 浏览Yeoman Y ...
- 使用Yeoman搭建 AngularJS 应用 (11) —— 让我们搭建一个网页应用
原文地址:http://yeoman.io/codelab/prepare-production.html 让我们发布这个应用 优化产品的文件 为了创建应用的产品版本,我们想做如下的事情 检查你的代码 ...
- 使用Yeoman搭建 AngularJS 应用 (10) —— 让我们搭建一个网页应用
原文地址:http://yeoman.io/codelab/write-unit-tests.html 对于不熟悉的Karma的人来说,这是JavaScript测试框架,这个Angular的生成器包含 ...
- 使用Yeoman搭建 AngularJS 应用 (9) —— 让我们搭建一个网页应用
原文地址:http://yeoman.io/codelab/install-packages.html 列出当前程序包 我们现在查看一下我们已经安装的程序包,输入下面的命令 bower list 查找 ...
- 使用Yeoman搭建 AngularJS 应用 (7) —— 让我们搭建一个网页应用
原文地址:http://yeoman.io/codelab/preview-inbrowser.html 开启你的服务 运行Grunt任务,通过输入下面的命令来创建一个本地Node的http服务,地址 ...
- 使用Yeoman搭建 AngularJS 应用 (6) —— 让我们搭建一个网页应用
原文地址:http://yeoman.io/codelab/review-generated-files.html 打开mytodo文件夹,你会看到现在的基架.如下图所示 在mytodo文件夹,我们能 ...
随机推荐
- 省市联动Demo
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ...
- 【Ionic】---AngularJS扩展基本布局
目录: 标题栏 : ion-header-bar 页脚栏 : ion-footer-bar header/footer : 样式及内容 内容区 : ion-content 滚动框 : ion-scro ...
- MVC中提示错误:从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法
今天往MVC中加入了一个富文本编辑框,在提交信息的时候报了如下的错误:从客户端(Content="<EM ><STRONG ><U >这是测试这...&q ...
- python学习day3--python基础
1.python不用声明变量的类型,运行时python自己进行判断 2.尽量不要用“+”去拼接字符串,运行时会每遇到一个“+”就开辟一块内存空间,使用如下方式进行字符串的拼接. msg=''' inf ...
- Session id实现通过Cookie来传输方法及代码参考
1. Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.因此从上述的定义中我们可以看到,Session实际上是一个特定的 ...
- 返回页面,主页面不刷新window.history.go(-1),主页面刷新window.location.go(-1)
返回上一页,不刷新 window.history.go(-1) 返回上一页,刷新 window.location.go(-1)
- javascript-对象的函数(一)
Date.prototype.Format = function(fmt) { //author: meizz var o = { "M+" : this.getMonth()+1 ...
- encodeURIComponent=>Uri.EscapeDataString
javascript: encodeURIComponent=> C#: Uri.EscapeDataString http://stackoverflow.com/questions/5754 ...
- 串操作,C++实现
对串的基本操作都全已经实现 对kmp,kf字符串替换等功能全都已经实现 由于时间原因.没来得及注释,希望大家参考见谅. 串操作hstring.h头文件实现 //kallen 1 #ifndef _HS ...
- DTcms同一频道需要两种类型的列表模版思路
放两个列表模版即可,两个模版下的内容都可以访问,同一个内容展示不同的模版,需要什么栏目,链接就写哪个. 对动态链接进行判断,选择 最终效果: 频道URL配置