使用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, 1);
};

新的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, 1);
    };
  });

返回浏览器,你能点击X按钮删除相应的元素

时间: 2024-10-11 06:52:08

使用Yeoman搭建 AngularJS 应用 (8) —— 让我们搭建一个网页应用的相关文章

使用Yeoman搭建 AngularJS 应用 (2) —— 让我们搭建一个网页应用

原文地址:http://yeoman.io/codelab/index.html 使用Yeoman搭建简单的应用 今天将会搭建一个简单的网页程序.你将可以添加,删除,拖拽和保存. 浏览Yeoman Yeoman 是一个戴帽子并且穿套袖的男人 用一到两个命令,Yeoman可以为你的全部网页程序,或者单个模块编写样板代码.Yeoman可以生成一个预览的网站服务器并且监视你的文件,为了重新载入变化的和编译Sass.Yeoman也能运行你的单元测试,最小化并且连结你的代码,优化图片以及更多的功能. yo

使用Yeoman搭建 AngularJS 应用 (6) —— 让我们搭建一个网页应用(2016-04-20 15:38)

原文地址:http://yeoman.io/codelab/review-generated-files.html 打开mytodo文件夹,你会看到现在的基架.如下图所示 在mytodo文件夹,我们能看到 app: 应用程序的父文件夹 index.html: angular应用程序的基础html文件 404.html, favicon.ico和robots.txt: 通用网页文件 scripts: 你自己的JS文件 app.js: 我们主要的Angular应用代码 controllers: 我们

搭建 AngularJS+Ionic+Cordova 开发环境并运行一个demo

目前的手机APP有三类:原生APP,WebAPP,HybridApp:HybridApp结合了前两类APP各自的优点,越来越流行. Cordova就是一个中间件,让我们把WebAPP打包成HybridAPP,并且它提供了非常多的插件,方便我们使用原生APP的功能. Ionic是一个界面样式库,仿照原生的ios和android界面:同时它是基于AngularJs的. 本文我们在win7中搭建 AngularJS+Ionic+Cordova 开发环境,包括所涉及的Node.js.Cordova CL

angularJS学习(三)——搭建学习环境

1.安装Node.js 和Testacular 1.1. 安装Node.js及配置部分,在另一篇博文:node.js的安装里面讲到了,地址是:http://www.cnblogs.com/tianxue/p/3897103.html 1.2. 安装配置好Node.js后,安装Testacular 在控制台输入命令:npm install -g testacular 2.安装Git工具 git我已经安装了. 用以下命令从GitHub复制本教程项目的源代码文件: git clone git://gi

持续集成(二)工具搭建篇—内网邮件服务器搭建

在我们的持续构建中,项目构建中出现错误提醒,或者开发人员之间的沟通交流,进度汇报的事务,都是离不开一个通信工具,那就是邮件.在我们的项目开发中如果使用第三方的邮件平台,这肯定不是最好的选择,因为第三方的邮件需要外网的支持,但是外网又不是特别的可靠,假如外网链接出现了问题,这样就会不必要的延误我们的工期.再或者很多项目都是保密项目,在开发中只能用内网.但是不用邮件吧又不行.为了解决这个头疼的问题,我们的内网邮件服务器工具就出现了,只要用它安装在我们的服务器上,配置好账户,配置好客户端,在内网里就可

面向新手的Web服务器搭建(一)——IIS的搭建

很多童鞋说自己是做移动开发的,想挂个简单的Web API,可是服务器又不会搭,这样一来测试就成了问题.看看网上的教程,发现略难懂,而且大多是一个转一个,没价值,所以干脆写几篇文章讲讲简单的Web服务器怎么搭,让不太涉及Web的童鞋快速上手. 我计划把几个主流的,比如Apache.IIS.Nginx等在Windows或者Linux上的搭建方法都说说,由于自己做的是.NET,所以,第一篇先上IIS吧! 一.IIS服务器的搭建 IIS全称Internet Information Service,中文名

搭建Lamp架构之一,apache搭建。

一:实验要求1:学会编译安装httpd服务器2:熟悉httpd服务的部署过程及常见配置3:学会构建AWStats日志分析系统4:httpd服务的访问控制客户机的地址限制用户授权限制5:构建虚拟WEB主机基于域名的虚拟主机基于IP地址.端口的虚拟主机二:实验环境1.安装包apr-util-1.4.1.tarapr-1.4.6.tarhttpd-2.4.2.tar2.服务器Linux6.5yum仓库三:实验步骤 卸载原先的httpd服务yum remove httpd2.共享宿主机文件夹3.挂载共享

springcloud架构搭建(一) Eureka服务器搭建及配置

springcloud架构搭建(一) Eureka服务器搭建及配置今天开始准备学习一下springcloud的相关知识以及环境部署,并且搭建一套springcloud分布式框架: 本文只针对刚开始接触或者没有接触过springcloud的小白如果下面有什么不足之处请大家及时指出写这个博客的目的主要是为了大家共同学习交流.共同进步第一步,创建一个普通的springboot项目以下方法都可以快速创建一个boot项目: 浏览器访问http://start.spring.io/,填写信息,下载zip包,

搭建angularjs API文档站点

提供一个国内可以访问的 angularjs API文档站点 http://i.frllk.com/ 文档直接在 github 上下载的: https://github.com/angular-cn/ng-docs-en 空间是万网赠送的 2年时间,本来也没有用处所幸共享出来当成api站点用 另外提供一个免FQ上Google的网站 http://www.glgoo.com 好了现在开始抒发我内心挤压已久的不满了. 墙! 墙! 墙 到处墙 你们到底有多少见不得光的事情.