亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

AngularJS語法詳解

2019-11-20 13:20:01
字體:
來源:轉載
供稿:網友

模板和數據的基本運作流程如下:

用戶請求應用起始頁面
用戶的瀏覽器向服務器發起一次http連接,然后加載index.html頁面,這個頁面包含了模板
angular被加載到頁面中,等待頁面加載完成,查找ng-app指令,用來定義模板的邊界
angular遍歷模板,查找指定和綁定關系,將觸發一些列動作:注冊監聽器、執行一些DOM操作、從服務器獲取初始化數據。最后,應用將會啟動起來,并將模板轉換成DOM視圖
連接到服務器去加載需要展示給用戶的其他數據

顯示文本

一種使用{{}}形式,如{{greeting}} 第二種ng-bind="greeting"

使用第一種,未被渲染的頁面可能會被用戶看到,index頁面建議使用第二種,其余的頁面可以使用第一種

表單輸入

復制代碼 代碼如下:

<html ng-app>
<head>
    <title>表單</title>
    <script type="text/javascript" src="angular.min.js"></script>
    <script type="text/javascript">
    function StartUpController($scope) {
        $scope.funding = {startingEstimate:0};
        computeNeeded = function() {
            $scope.funding.needed = $scope.funding.startingEstimate * 10;
        };
        $scope.$watch('funding.startingEstimate',computeNeeded); //watch model的變化
    }
    </script>
</head>
<body>
    <form ng-controller="StartUpController">
        Starting: <input ng-change="computeNeeded()" ng-model="funding.startingEstimate">  //change的時候調用函數
        Recommendation: {{funding.needed}}
    </form>
</body>
</html>

在某些情況下,我們不想一有變化就立刻做出動作,而是要進行等待。例如:

復制代碼 代碼如下:

<html ng-app>
<head>
    <title>表單</title>
    <script type="text/javascript" src="angular.min.js"></script>
    <script type="text/javascript">
    function StartUpController($scope) {
        $scope.funding = {startingEstimate:0};
        computeNeeded = function() {
            $scope.funding.needed = $scope.funding.startingEstimate * 10;
        };
        $scope.$watch('funding.startingEstimate',computeNeeded);//watch監視一個表達式,當這個表達式發生變化時就會調用一個回調函數
        $scope.requestFunding = function() {
            window.alert("Sorry,please get more customers first.")
        };
    }
    </script>
</head>
<body>
    <form ng-submit="requestFunding()" ng-controller="StartUpController">  //ng-submit
        Starting: <input ng-change="computeNeeded()" ng-model="funding.startingEstimate">
        Recommendation: {{funding.needed}}
        <button>Fund my startup!</button>
    </form>
</body>
</html>

非表單提交型的交互,以click為例

復制代碼 代碼如下:

<html ng-app>
<head>
    <title>表單</title>
    <script type="text/javascript" src="angular.min.js"></script>
    <script type="text/javascript">
    function StartUpController($scope) {
        $scope.funding = {startingEstimate:0};
        computeNeeded = function() {
            $scope.funding.needed = $scope.funding.startingEstimate * 10;
        };
        $scope.$watch('funding.startingEstimate',computeNeeded);
        $scope.requestFunding = function() {
            window.alert("Sorry,please get more customers first.")
        };
        $scope.reset = function() {
            $scope.funding.startingEstimate = 0;
        };
    }
    </script>
</head>
<body>
    <form ng-controller="StartUpController">
        Starting: <input ng-change="computeNeeded()" ng-model="funding.startingEstimate">
        Recommendation: {{funding.needed}}
        <button ng-click="requestFunding()">Fund my startup!</button>
        <button ng-click="reset()">Reset</button>
    </form>
</body>
</html>

列表、表格以及其他迭代型元素

ng-repeat會通過$index返回當前引用的元素序號。 示例代碼如下:

復制代碼 代碼如下:

<html ng-app>
<head>
    <title>表單</title>
    <script type="text/javascript" src="angular.min.js"></script>
    <script type="text/javascript">
    var students = [{name:'Mary',score:10},{name:'Jerry',score:20},{name:'Jack',score:30}]
    function StudentListController($scope) {
        $scope.students = students;

    }
    </script>
</head>
<body>
    <table ng-controller="StudentListController">
        <tr ng-repeat='student in students'>
            <td>{{$index+1}}</td>
            <td>{{student.name}}</td>
            <td>{{student.score}}</td>
        </tr>
    </table>
</body>
</html>

隱藏與顯示
ng-show和ng-hide功能是等價的,但是運行效果正好相反。

復制代碼 代碼如下:

<html ng-app>
<head>
<script type="text/javascript" src="angular.min.js"></script>
<script>
  function DeathrayMenuController($scope) {
    $scope.menuState = {show:false };//這里換成menuState.show = false 效果就顯示不出來了。以后聲明變量還是放在{}里面吧
    $scope.toggleMenu = function() {
      $scope.menuState.show = !$scope.menuState.show;
    };
  }
</script>
</head>
<body>
<div ng-controller='DeathrayMenuController'>
  <button ng-click='toggleMenu()'>Toggle Menu</button>
  <ul ng-show='menuState.show'>
    <li ng-click='stun()'>Stun</li>
    <li ng-click='disintegrate()'>Disintegrate</li>
    <li ng-click='erase()'>Erase from history</li>
  </ul>
</div>  
</body>
</html>

css類和樣式

ng-class和ng-style都可以接受一個表達式,表達式執行的結果可能是如下取值之一:

表示css類名的字符串,以空格分隔
css類名數組
css類名到布爾值的映射
代碼示例如下:

復制代碼 代碼如下:

<html ng-app>
<head>
<style type="text/css">
    .error {
        background-color: red;
    }
    .warning {
        background-color: yellow;
    }
</style>
<script type="text/javascript" src="angular.min.js"></script>
<script>
  function HeaderController($scope) {
    $scope.isError = false;
    $scope.isWarning = false;

    $scope.showError = function() {
        $scope.messageText = "Error!!!!"
        $scope.isError = true;
        $scope.isWarning = false;
    }

    $scope.showWarning = function() {
        $scope.messageText = "Warning!!!"
        $scope.isWarning = true;
        $scope.isError = true;
    }
  }
</script>
</head>
<body>
<div ng-controller="HeaderController">
<div ng-class="{error:isError,warning:isWarning}">{{messageText}}</div>
    <button ng-click="showError()">Error</button>
    <button ng-click="showWarning()">Warning</button>
</div>
</body>
</html>

css類名到布爾值的映射
示例代碼如下:

復制代碼 代碼如下:

<html ng-app>
<head>
<style type="text/css">
    .selected {
        background-color: lightgreen;
    }
</style>
<script type="text/javascript" src="angular.min.js"></script>
<script>
    function Restaurant($scope) {
        $scope.list = [{name:"The Handsome",cuisine:"BBQ"},{name:"Green",cuisine:"Salads"},{name:"House",cuisine:'Seafood'}];

        $scope.selectRestaurant = function(row) {
            $scope.selectedRow = row;
        }
    }
</script>
</head>
<body>
<table ng-controller="Restaurant">
    <tr ng-repeat='restaurant in list' ng-click='selectRestaurant($index)' ng-class='{selected: $index==selectedRow}'>  //css類名到布爾值的映射,當模型屬性selectedRow的值等于ng-repeat中得$index時,selectd樣式就會被設置到那一行
        <td>{{restaurant.name}}</td>
        <td>{{restaurant.cuisine}}</td>
    </tr>
</table>
</body>
</html>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美国产精品专区久久| 美女国内精品自产拍在线播放| 亚洲女人被黑人巨大进入| 欧美色videos| 人人做人人澡人人爽欧美| 欧美日韩亚洲激情| 午夜精品99久久免费| 国产精品999999| 51精品国产黑色丝袜高跟鞋| 久久亚洲精品中文字幕冲田杏梨| 国产精品嫩草影院一区二区| 97精品视频在线| 国产精品美女久久久久久免费| 国产精品盗摄久久久| 亚洲欧洲日产国码av系列天堂| 青青草成人在线| 欧美精品一区二区三区国产精品| 97视频在线观看免费| 欧美丰满少妇xxxxx做受| 国产日韩欧美成人| 欧美黑人狂野猛交老妇| 国产精品第一区| 亚洲国产天堂久久综合| 国产精品大陆在线观看| 日韩欧美国产中文字幕| 538国产精品一区二区在线| 精品亚洲夜色av98在线观看| 亚洲精品久久久久久久久久久| 国产成人福利夜色影视| 久久在线精品视频| 久久亚洲国产精品成人av秋霞| 青青草精品毛片| 性色av一区二区三区在线观看| 日本一欧美一欧美一亚洲视频| 欧美成人一区在线| 亚洲国产精品中文| 国产91在线播放精品91| 26uuu日韩精品一区二区| 九九热精品视频| 亚洲新中文字幕| 国产视频在线一区二区| 国产91精品网站| 91亚洲人电影| 欧美激情小视频| 这里只有精品在线播放| 国产精品久久久久久一区二区| 欧美裸体xxxx极品少妇软件| 这里只有精品视频在线| 亚洲欧美日韩第一区| 欧美国产亚洲精品久久久8v| 国产剧情日韩欧美| 91在线无精精品一区二区| 亚洲一区二区三区乱码aⅴ| 欧美精品18videos性欧美| 欧美性少妇18aaaa视频| 7m第一福利500精品视频| 欧美成人午夜影院| 91精品视频免费| 欧美日韩国产综合新一区| 中文字幕一区日韩电影| 欧美精品videos另类日本| 国产亚洲欧美日韩精品| 国产成人亚洲综合青青| 欧美性少妇18aaaa视频| 日韩中文字幕在线看| 91系列在线观看| 亚洲护士老师的毛茸茸最新章节| 2023亚洲男人天堂| 国产精品男人爽免费视频1| 97视频com| 青青草一区二区| 日韩视频―中文字幕| 国产精品视频色| 亚洲天堂av在线免费观看| 亚洲国产精品系列| 亚洲欧美激情视频| 国产成人在线精品| 亚洲嫩模很污视频| 久久视频这里只有精品| 国产日韩精品入口| 欧美亚州一区二区三区| 亚洲国产成人久久综合| 粉嫩老牛aⅴ一区二区三区| 国产精品黄页免费高清在线观看| 97婷婷大伊香蕉精品视频| 97成人精品区在线播放| 久久久久久久久久久91| 日韩在线欧美在线| 久久免费精品日本久久中文字幕| 国产欧亚日韩视频| 97色在线视频观看| 欧美综合第一页| 欧美日韩日本国产| 亚洲女人天堂色在线7777| 欧美精品久久久久久久免费观看| 久久精品亚洲94久久精品| 韩国日本不卡在线| 欧美高清在线观看| 日本乱人伦a精品| 欧美日韩爱爱视频| 久久久久久久香蕉网| 精品久久久精品| 欧美一级大片在线免费观看| 成人精品在线观看| 欧美裸体xxxx极品少妇| 欧美成人精品在线观看| 亚洲精品国产免费| 91在线国产电影| 亚洲日本中文字幕| 亚洲国产天堂网精品网站| 久久精品视频播放| 日韩欧美一区视频| 色先锋资源久久综合5566| 黄色一区二区三区| 中文字幕日韩免费视频| 日韩av男人的天堂| 日本19禁啪啪免费观看www| 在线日韩日本国产亚洲| 日韩av手机在线观看| 国产精品国产三级国产专播精品人| 亚洲精品91美女久久久久久久| 亚洲第一视频在线观看| 亚洲精品一区中文| 亚洲人成在线一二| 欧美日韩国产一区二区三区| 精品精品国产国产自在线| 欧美色道久久88综合亚洲精品| 欧美孕妇毛茸茸xxxx| 亚洲欧洲自拍偷拍| 欧美国产日韩精品| 国产精品高潮呻吟久久av无限| 中文字幕自拍vr一区二区三区| 日韩av成人在线| 在线免费观看羞羞视频一区二区| 精品中文字幕在线2019| 国产成人+综合亚洲+天堂| 欧美富婆性猛交| 亚洲欧美制服中文字幕| 国产一区二区久久精品| 97免费视频在线| 亚洲国产欧美日韩精品| 日韩乱码在线视频| 日产日韩在线亚洲欧美| 91中文精品字幕在线视频| 亚洲欧美日韩高清| 国产精品麻豆va在线播放| 久久久久北条麻妃免费看| 日韩中文字幕国产精品| 久久久久一本一区二区青青蜜月| 亚州成人av在线| 久久色精品视频| 宅男66日本亚洲欧美视频| 亚洲美女中文字幕| 韩国一区二区电影| 欧美午夜久久久| 亚洲999一在线观看www| 亚洲综合视频1区| 在线观看欧美视频| 亚洲一级一级97网| 亚洲天堂影视av| 亚洲xxxxx| 色妞在线综合亚洲欧美| 国产脚交av在线一区二区| 亚洲国产精品系列|