angularjs-ng-app,ng-model,ng-class,ng-style,三目,選項卡,$watch,$scope

AngularJS:MVx框架,把數據、表現、邏輯分離開
 方便程序員——避免重複勞動(獲取、事件)

版本:1.2.x 和 1.3.x



ng-bind 輸出(不常用)
ng-app  範圍

模板:{{}},輸出

1、ng-app=" "  定義angularJS的使用範圍;

2、ng-init="變量=值;變量='值'"  初始化變量的值,有多個變量時,中間用分號隔開;

3、ng-model="變量"  定義變量名;

4、ng-bind="變量"  綁定變量名,獲取該變量的數據。這裏的變量就是第3條的變量名。但是一般都用雙重花括號來獲取變量的值,比如:{{變量}}。



ng-model 指令 綁定 HTML 元素 到應用程序數據。雙向綁定

ng-model 指令也可以:

  • 爲應用程序數據提供類型驗證(number、email、required)。

  • 爲應用程序數據提供狀態(invalid、dirty、touched、error)。

  • 爲 HTML 元素提供 CSS 類。

  • 綁定 HTML 元素到 HTML 表單。


1.Angular和JavaScript不互通
2.盯住數據

<!doctype html>
<!-- ng-app使用範圍HTML -->
<!-- 包含AngularJs不能直接運行,需要引導,最簡單的方法是AnjularJs自定義的ng-app HTML屬性 -->
<html lang="en" ng-app="">  
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <!-- 引用AngularJs庫,一個封裝好的JavaScript文件,不依賴其他庫; -->
    <script src="angular.min.js"></script>
</head>
<body>
    
    <!-- ng-init:數據初始化 -->
    <div ng-init="a=0;b=0;json={a:12,b:4}">
        <!-- ng-modle數據源 -->
        <input type="text" ng-model="json.a">
        <input type="text" ng-model="json.b">

        <!-- {{數據輸出}} -->
        result:`json`.`a-json`.`b`
    </div>
</body>
</html>

2、class方法:ng-class

<!doctype html>
<!-- ng-app使用範圍HTML -->
<html lang="en" ng-app="">  
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="angular.min.js"></script>
    <style type="text/css" media="screen">
        .box {width: 200px;height: 300px;background: #CCC;}
        .box2 {width: 200px;height: 200px;background: red;}
    </style>
</head>
<body>
    
    <!-- ng-class:數組作爲輸入 -->
    <div ng-init="arr=['box','box2','active']" >
        <!-- class第一種方法 -->
        <input type="text" ng-model="cls">
        <div class="`cls`"> class第一種方法 </div>   
        
        <!-- class第二種方法 -->
        <div ng-class="arr" >class第二種方法</div>


    </div>
</body>
</html>

3、style方法:ng-style

<!doctype html>
<!-- ng-app使用範圍HTML -->
<html lang="en" ng-app="">  
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="angular.min.js"></script>
    <style type="text/css" media="screen">
        .box {width: 200px;height: 300px;background: #CCC;}
        .box2 {width: 200px;height: 200px;background: red;}
    </style>
</head>
<body>
    
    <div ng-init="json={width:'200px',height: '300px',background: '#CCC'};" >
        <!-- style第一種方法 -->
        <input type="text" ng-model="cls">
        <div style="`cls`"> style第一種方法 </div>   
        
        <!-- style第二種方法 -->        
        <div ng-style="json"> style第二種方法 </div>  


    </div>
</body>
</html>

4、ng-if

<!doctype html>
<!-- ng-app使用範圍HTML -->
<html lang="en" ng-app="">  
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="angular.min.js"></script>
    <style type="text/css" media="screen">
    </style>
</head>
<body>
    
    <div ng-init="show=true" >
        <div ng-if="show">
            ng-if:false  不顯示  <br>
            ng-if: true   顯示    <br>
        </div>
    
</body>
</html>

5、三目運算符

<!doctype html>
<!-- ng-app使用範圍HTML -->
<html lang="en" ng-app="">  
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="angular.min.js"></script>
    <style type="text/css" media="screen">
    </style>
</head>
<body>
    
    <div ng-init="arr=[12,5,43,22,1]" > 
        <div ng-repeat="(key, value) in arr" style="{{key%2==1?'background: yellow':'';}}">
            ng-repeat:第一種寫法
            `key`:`value`
        </div>
        <br>
        <div ng-repeat="v in arr" style="{{v%2==1?'background:#CCC':''}}";>
            ng-repeat:第二種寫法 
            `v`
        </div>    
</body>
</html>

6、選項卡-angularjs

<!doctype html>
<!-- ng-app使用範圍HTML -->
<html lang="en" ng-app="test">  
<head>
    <meta <meta charset=" " set="UTF-8">
    <title>Document</title>
    <style type="text/css" media="screen">
        #div1 input {background: #CCC;}
        #div1 input.active {background: yellow;}
        #div1 div {width: 200px;height: 200px;border: 1px solid #000;}
    </style>
    <script src="angular.min.js"></script>
    <script type="text/javascript">
        var app=angular.module('test', []) 
        app.controller('cont1',  function($scope){
            $scope.now=0

            $scope.arr=[
                {name:'TV',content:'PANDA'},
                {name:'music',content:'JAY'},
                {name:'sport',content:'CHINA'}
            ]

            $scope.fn=function(n){
                $scope.now=n
            }
        })

    </script>
    <style type="text/css" media="screen">
    </style>
</head>
<body>
    
    <div id="div1" ng-controller="cont1">
        <!-- ng-click與ng-repeat不能直接引用,需要通過函數使用 -->
        <input ng-repeat="(key, value) in arr" type="button" value="`value`.`name`" class="{{now==$index?'active':''}}" ng-click="fn($index)">
        <div ng-repeat="(key, value) in arr" ng-show="now==$index">
            `value`.`content`
        </div>
    </div>

</body>
</html>

7、$interval

<!doctype html>
<!-- ng-app使用範圍HTML -->
<html lang="en" ng-app="test">  
<head>
    <meta <meta charset=" " set="UTF-8">
    <title>Document</title>
    <style type="text/css" media="screen">
        #div1 input {background: #CCC;}
        #div1 input.active {background: yellow;}
        #div1 div {width: 200px;height: 200px;border: 1px solid #000;}
    </style>
    <script src="angular.min.js"></script>
    <script type="text/javascript">
        var app=angular.module('test', []) 
        app.controller('cont1',  function($scope,$interval){
            $scope.a=0

            var timer=$interval(function(){
                $scope.a++
                if ($scope.a==100) {
                    $interval.cancel(timer)
                }
            },50)
        })

    </script>
    <style type="text/css" media="screen">
    </style>
</head>
<body ng-controller="cont1">    
`a`
</body>
</html>

8、$watch

<!doctype html>
<!-- ng-app使用範圍HTML -->
<html lang="en" ng-app="test">  
<head>
    <meta <meta charset=" " set="UTF-8">
    <title>Document</title>
    <style type="text/css" media="screen">
        #div1 input {background: #CCC;}
        #div1 input.active {background: yellow;}
        #div1 div {width: 200px;height: 200px;border: 1px solid #000;}
    </style>
    <script src="angular.min.js"></script>
    <script type="text/javascript">
        var app=angular.module('test', []) 
        app.controller('cont1',  function($scope,$http){
            $scope.str=''
            $scope.arr=[]
            $scope.$watch('str',function () {
                $http.jsonp('https://s.taobao.com/search', {params:{
                    q:$scope.str,
                    cb:'JSON_CALLBACK'
                }}).success(function (json) {
                    alert(json.q)
                }).error(function () {
                    alert('fail')
                })
            })
        })

    </script>
    <style type="text/css" media="screen">
    </style>
</head>
<body ng-controller="cont1">    
    <input type="text" ng-model="str">
    <ul>
        <li ng-repeat="s in arr">`s`</li>
    </ul>
</body>
</html>


9、$scope

<!doctype html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="angular.min.js"></script>
        <script type="text/javascript">
                var app=angular.module('test', [])

                //controller實際上爲JavaScript函數,主要作用
                //1、可以提供模型的初始值,與ng-init作用相同
                //2、添加UI的函數
                app.controller('HelloCtrl', ['$scope', function ($scope) {
                //$scope可以加入與模板相關的數據和方法                       
                $scope.name="AnjularJs"
                $scope.getName=function(){
                        return $scope.name
                }
                }])
        </script>
</head>

<body ng-app="test">       
        
        <div ng-controller="HelloCtrl">
                <!-- 
                ng-model實際上是普通的JavaScript對象,可以使用當前存在的所有JavaScript類和對象;
                前提,只需要將對象指派給$scope,AngularJs就可以確認它存在
                 -->
                say hello to,<input type="text" ng-model="name"><br>
                <!-- $scope可以有效的操作View -->
                <h1>hello,{{getName()}}!</h1>
        </div>
</body>
</html>

10、深入理解$scope作用域

<!doctype html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="angular.min.js"></script>
        <script type="text/javascript">
                var app=angular.module('test', [])


                app.controller('WorldCtrl', ['$scope', function ($scope) {
                     
                $scope.population=60
                $scope.countries=[
                    {name:'China',population:12},
                    {name:'USA',population:1.1}
                ]
                }])
        </script>
</head>

<body ng-app="test">       
        
        <ul ng-controller="WorldCtrl">
            <!-- 
            不同的DOM元素指向不同的作用域,並使用各自作用域中的變量渲染模板,所以不會造成命名衝突 ;
            在例子中,<li>元素都有獨自的作用域,分別定義各自的country變量
            -->
            <li ng-repeat="c in countries">
                `c`.`name` has population of `c`.`population`
            </li>
            <hr>
            World's population : `population` billions            
        </ul>

</body>
</html>

11、{{}} 等同於 ng_bind

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="angular.min.js"></script>
    <script>
        var app=angular.module('', [])
        $scope.name="AngularJs"
    </script>
</head>
<body ng-app="">
    please input your name:<input type="text" ng-model="name"><br>
    <div ng-bind="name"></div>
    `name`
</body>
</html>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章