[Cousera Angular JS学习笔记]第一周(2)

之前写了一个简单的angular的页面,这边主要要学习几个用法:controller,filter

(1)第一个练习主要是把原来的ng-init的内容移到controller

首先定义module名称

<html lang="en" ng-app="confusionApp">

然后初始化module和controller,是在script标签下面

    <script>
        var app = angular.module(‘confusionApp‘,[]);
        app.controller(‘menuController‘, function() {

        });

    </script>把原来ng-init的内容删除掉,写到function里面,同时this.dishes=dishes相当于controller的成员变量吧

同时把原来使用ng-init标签的地方,替换成使用ng-controller,取个别名
 <div class="row row-content" ng-controller="menuController as menuCtrl">

最后引用的时候使用menuCtrl.dishes
 <li class="media" ng-repeat="dish in menuCtrl.dishes">

(2)第二个练习是使用filter,主要是angular自带的filter,前面已经看到currency了,就是把价格的格式转换成货币的格式,其他的还有uppercase,lowercase,currency,date,filter,orderBy,json,limitTo这个练习主要还讲了bootstrap的tab,ng-class ng-click的用法,最后讲了filter1、首先把之前的评论的部分删掉,暂时没用了
                        <p>Comment: {{dish.comment}}</p>
                        <p>Type your comment:
                         <input type="text" ng-model="dish.comment"></p>
2、再加上bootstrap的tab                <ul class="nav nav-tabs" role="tablist">                    <li role="presentation">                    <a                     aria-controls="all menu"                     role="tab">The Menu</a></li>                    <li role="presentation">                    <a                     aria-controls="appetizers"                     role="tab">Appetizers</a></li>                    <li role="presentation">                    <a                     aria-controls="mains"                     role="tab">Mains</a></li>                    <li role="presentation">                    <a                     aria-controls="desserts"                     role="tab">Desserts</a></li>                </ul>3、这个时候下面的menulist还不是在tab控制的,移到tab中去
            <div class="tab-content">
               <ul class="media-list tab-pane fade in active">
                   . . .
               </ul>
            </div>
4、下一步就是在tab页之间切换首先在controller中维护下当前的tab变量
this.tab = 1;
然后在controller中添加函数select
            this.select = function(setTab) {
                this.tab = setTab;

            }

使用ng-click在对应tab被点击的时候调用select更新tab的值
                <ul class="nav nav-tabs" role="tablist">
                    <li role="presentation">
                    <a ng-click="menuCtrl.select(1)"
                     aria-controls="all menu"
                     role="tab">The Menu</a></li>
                    <li role="presentation">
                    <a ng-click="menuCtrl.select(2)"
                     aria-controls="appetizers"
                     role="tab">Appetizers</a></li>
                    <li role="presentation">
                    <a ng-click="menuCtrl.select(3)"
                     aria-controls="mains"
                     role="tab">Mains</a></li>
                    <li role="presentation">
                    <a  ng-click="menuCtrl.select(4)"
                     aria-controls="desserts"
                     role="tab">Desserts</a></li>
                </ul>使用ng-class根据条件更新页面的CSS,实现tab间的切换
                <ul class="nav nav-tabs" role="tablist">
                    <li role="presentation"
                     ng-class="{active:menuCtrl.isSelected(1)}">
                    <a ng-click="menuCtrl.select(1)"
                     aria-controls="all menu"
                     role="tab">The Menu</a></li>
                    <li role="presentation"
                     ng-class="{active:menuCtrl.isSelected(2)}">
                    <a ng-click="menuCtrl.select(2)"
                     aria-controls="appetizers"
                     role="tab">Appetizers</a></li>
                    <li role="presentation"
                     ng-class="{active:menuCtrl.isSelected(3)}">
                    <a ng-click="menuCtrl.select(3)"
                     aria-controls="mains"
                     role="tab">Mains</a></li>
                    <li role="presentation"
                     ng-class="{active:menuCtrl.isSelected(4)}">
                    <a  ng-click="menuCtrl.select(4)"
                     aria-controls="desserts"
                     role="tab">Desserts</a></li>
                </ul>

好了,和前面一样,在controller增加一个function            this.isSelected = function(setTab){                 return this.tab === setTab;                };
5、最后一步使用filter,没有指定名字的时候表示匹配所有field
 <li class="media" ng-repeat="dish in menuCtrl.dishes | filter:menuCtrl.filtText">
 <li class="media" ng-repeat="dish in menuCtrl.dishes | filter:{category:menuCtrl.filtText}">
需要在controller中初始化filtText this.filtText = ‘‘;需要在设置tab的时候也设置filterText           this.select = function(setTab){                 this.tab = setTab;

                if (setTab === 2)                    this.filtText = "appetizer";                else if (setTab === 3)                    this.filtText = "mains";                else if (setTab === 4)                    this.filtText = "dessert";                else                    this.filtText = "";                };

完成!

				
时间: 2024-12-18 06:51:28

[Cousera Angular JS学习笔记]第一周(2)的相关文章

[Cousera Angular JS学习笔记]第一周

最近在给搜索引擎做前台,开始学习Angular JS,直接上coursera上的课程:https://www.coursera.org/learn/angular-js/home/week/1(没有JS基础的同学可以和我一样先过下cousera的JS课程 Interacticity with JavaScript) 要先安装bower(方便获取JS),安装bower之前要先安装node JS (1) 安装nodejs过程直接参考http://czpae86.iteye.com/blog/1636

[Pro Angular.JS]学习笔记1.1:设置开发环境

可以使用yeoman.io,很方便.我已经写了一篇随笔,介绍如何使用.这里也有一篇介绍的文章:http://www.cnblogs.com/JoannaQ/p/3756281.html 代码编辑器,在Mac下用了一下WebStorm,太恶心了.另外发现书的作者使用的开发环境是Windows + VS Express 2013,为了方便学习,我也使用VS Express 2013 Update2.VS2013用起来蛮舒服的,把WebStorm比得跟驼屎一样.也许是因为我没用习惯吧. 1.安装Nod

Angular JS 学习笔记

特定领域语言 编译器:遍历DOM来查找和它相关的属性, 分为编译和链接两个阶段, 指令:当关联的HTML结构进入编译阶段时应该执行的操作,可以写在名称里,属性里,css类名里:本质上是函数 稳定的DOM:绑定了数据模型的DOM元素的实例不会在绑定的生命周期发生改变 作用域:用来检测模型的改变和为表达式提供执行上下文的 AngularJS 和其它模板系统不同,它使用的是DOM而不是字符串 指令: 由某个属性.元素名称.css类名出现而导致的行为,或者说是DOM的变化 Filter过滤器:扮演着数据

[Android游戏开发学习笔记]View和SurfaceView

本文为阅读http://blog.csdn.net/xiaominghimi/article/details/6089594的笔记. 在Android游戏中充当主要角色的,除了控制类就是显示类.而在Android中涉及到显示的是View类,及继承自它的SurfaceView类和SurfaceView的其他子类等. 这里先只说View和SurfaceView.SurfaceView的直接子类有GLSurfaceView和VideoView,可以看出GL和视频播放以及CAmera摄像头一般均使用Su

Angular JS学习笔记

之前的学习方法有点盲目,建议以后只看与工作有关的内容,并且多问那些是只和工作有关联的. 遇到问题的时候,项目不急的话,自己研究,项目急的话,马上问. 方法不对,再努力也没有用. Angular JS学习网站:http://www.zouyesheng.com/angular.html#toc7 [  项目有关的内容 ] ng-model ng-click ng-options ng-repeat ng-if ng-show ng-hide ng-controller ng-href(有印象) {

Angular.js学习笔记 (二)

用A链接对象解析url的组成 var url = 'https://www.baidu.com:8080/aaa/1.html?id=10#name'; var aLink = document.createElement('a'); aLink.href = url; console.log(aLink);//<a href="https://www.baidu.com:8080/aaa/1.html?id=10#name"></a> console.log(

Angular.js学习笔记(三)

一.过滤器 1.uppercase,lowercase 大小写转换{{ "lower cap string" | uppercase }} // 结果:LOWER CAP STRING{{ "TANK is GOOD" | lowercase }} // 结果:tank is good2.date 格式化{{1490161945000 | date:"yyyy-MM-dd HH:mm:ss"}} // 2017-03-22 13:52:253.n

Angular JS 学习笔记(一)

1. 菜鸟教程:http://www.runoob.com/angularjs/angularjs-tutorial.html 2. Angular JS中文网:http://www.apjs.net/

angular.js学习笔记--概念总结

好久没更新了,现在开始学习学习angularjs,并且把学习到的一些知识总结记录一下,方便以后查找以及希望能给初学者一些帮助!(由于本人也是初学ng所以各位慎重理解!) 废话不多说,开始! $rootScope 和 $scope: $rootScope是angular中最接近全局作用域的对象,是所有$scope对象的最上层! $scope对象就是一个普通的js对象,我们可以在其上随意修改和添加属性,并且其在angular中充当数据模型,它是所有属性都可以自动呗视图访问到,但是它并不负责数据的处理