首页 > Web开发 > 详细

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

时间:2016-01-13 02:00:30      阅读:302      评论:0      收藏:0      [点我收藏+]

之前写了一个简单的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的用法,最后讲了filter
1、首先把之前的评论的部分删掉,暂时没用了
                        <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 = "";
                };

完成!






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

原文:http://www.cnblogs.com/renyingxin/p/5125931.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!