码迷,mamicode.com
首页 > Web开发 > 详细

Angularjs笔记(一)

时间:2015-08-20 14:44:41      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

    <script type="text/javascript">
                       //这些参数不能修改名字
          function Aaa($scope,$rootScope){
              $scope.name="hello";
              //name挂载到$scope,$scope是一个局部作用域,对应的控制器也是局部的
              $scope.age="20";
              //$rootScope是全局,在Bbb下能找到
              $rootScope.sel="sel";
          }
          
          function Bbb($scope){
              $scope.name="hi"
          }
  
    </script>
    <body>
        <!--第一种方式-->
        <div ng-controller="Aaa">
            <p>{{name}}</p>
            <p>{{age}}</p>
        </div>
        <div ng-controller="Bbb">
            <p>{{name}}</p>
            <p>{{sel}}</p>
        </div>
        <!--第二种方式-->
        <div ng-controller="Aaa">
            <p>{{name}}</p>
            <p>{{age}}</p>
            <!--如果model是指向Bbb的他就会来这里找,要是没有他就会向上找也就是向Aaa这里找-->
            <div ng-controller="Bbb">
                  <p>{{name}}</p>
                 <p>{{sel}}</p>
            </div>
        </div>
        
    </body>

依赖注入

<script type="text/javascript">
        //angular是没有传参的,要传参是通过这$scope, $rootScope这些就是依赖注入
        //$scope注入的局部的,$rootScope注入的是全部的
        //这些参数统称叫服务,服务是由$开头的后台跟名字
        function Aaa($scope, $rootScope) {
            $scope.name = "hello";
        }
    </script>
    <body>
        <div ng-controller="Aaa">
            <p>{{name}}</p>
            <p>{{age}}</p>
        </div>
    </body>

指令

<html ng-app>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <script type="text/javascript" src="angular.min.js"></script>
    <script type="text/javascript">
        function Aaa($scope, $rootScope) {
            $scope.name = "hello";
        }
    </script>
    <body>
        <!--这些以ng-开头的叫做指令,html上的ng-app就是初始化指令,ng-app是可以写到任何地方-->
        <div ng-controller="Aaa">
            <p>{{name}}</p>
        </div>
    </body>
</html>

双向数据绑定(MVVM设计模式,数据改变影响视图,视图改变影响数据)

    //改变数据影响视图
<script type="text/javascript"> function Aaa($scope,$timeout) { $scope.name = "hello"; // setTimeout(function(){ // 两秒过后数据改变,下面视图是成ha了,不过原生的定时器是不具备刷新视图的功能, // 所以看不到,等要用angular提供的定时器功能$timeout // $scope.name="ha"; // },2000); $timeout(function(){ $scope.name="hi"; },2000); } </script> <body> <div ng-controller="Aaa"> <p>{{name}}</p> </div> </body>
   //视图影响数据
<script type="text/javascript"> function Aaa($scope,$timeout) { $scope.name = "hello"; } </script> <body> <div ng-controller="Aaa"> <!--ng-model是上面的数据--> <input type="text" ng-model="name" /> <p>{{name}}</p> </div> </body>

也可以在视图里直接点击改变name值,也可用个函数

<div ng-controller="Aaa" ng-click="name=‘hi‘">
            <p>{{name}}</p>
</div>
    <script type="text/javascript">
        function Aaa($scope,$timeout) {
            $scope.name = "hello";
            $scope.show=function(){
                $scope.name="hi";
            }
        }
    </script>
    <body>
        <div ng-controller="Aaa" ng-click="show()">
            <p>{{name}}</p>
        </div>
    </body>

过滤器,比如货币格式过滤器

   <!--表达式里是可以支持符号的-->
   <!--过渡器的操作是在后面加个 |在加过滤器名 currency-->
   <p>费用:<span>{{iphone.money * iphone.num | currency:""}}</span></p>
    <script type="text/javascript">
        function Aaa($scope,$timeout) {
            $scope.iphone={
                money:5,
                num:1
            }
            //表达式如果显的臃肿,可以写到这里
            $scope.sum=function(){
             //这里要把$scope加上
                return $scope.iphone.money * $scope.iphone.num;
            }
        }
    </script>
    <body>
        <div ng-controller="Aaa">
            <p>价格:<input type="text" ng-model="iphone.money"></p>
            <p>个数:<input type="text" ng-model="iphone.num"></p>
                            <!--这里调方法-->
            <p>费用:<span>{{ sum()| currency:""}}</span></p>
        </div>
    </body>

监听数据变化的变化$watch,他接收三个参数,前两个是必选,他是挂载到$scope下的

    <script type="text/javascript">
        function Aaa($scope,$timeout) {
            $scope.iphone={
                money:5,
                num:1,
                fre:10
            }
            $scope.sum=function(){
                return $scope.iphone.money * $scope.iphone.num;
            }
            //$watch他只能监听单值,如果要监听全部最后一个参数要为true
            $scope.$watch("iphone",function(newVal,lodVal){
                console.log(newVal);
                console.log(oldVal);
            },ture);
            //他不但可以监听字符串也可以监听函数
            //function回调也接收三个形参,第一个是新的值,第二个老的值
            $scope.$watch($scope.sum,function(newVal,lodVal){
//                console.log(newVal);
//                console.log(oldVal);
                $scope.iphone.fre=newVal>=100?0:10;
            });
        }
    </script>

 angular模块化开发(1、可以减少变量之间的污染,2、可以做到依赖)

 angular.module()接收两个参数,第一个是字符串,第二个是数组

    <script type="text/javascript">
      //创建模块,上面的ng-app要指写下面的模块哪个为初始模块如:ng-app="myApp"
       var m1=angular.module(myApp,[]);
       //建立控制器,这样就成模块化了
       m1.controller("Aaa",function($scope){
              $scope.name="yan";
       });
       m1.controller("Bbb",function($scope){
              $scope.name="wen";
       });
       var m2=angular.module(myApp2,[]);
       var m3=angular.module(myApp3,[]);
//        function Aaa($scope) {
//         $scope.name="yan";
//        }
//        function Bbb($scope) {
//         $scope.name="wen";
//        }
    </script>
    <body>
        <div ng-controller="Aaa">
            <p>{{name}}</p>
        </div>
        <div ng-controller="Bbb">
            <p>{{name}}</p>
        </div>
    </body>

上面这个是本地开发的版本,要是上传到线上的话会进行压缩,那到时$scope会找不到

他提供了一种方式可以避免被压缩找不到

    <script type="text/javascript">
       var m1=angular.module(myApp,[]);
       m1.controller("Aaa",[$scope,function($scope){
              $scope.name="yan";
       }]);
       m1.controller("Bbb",[$scope,function($scope){
              $scope.name="wen";
       }]);
       var m2=angular.module(myApp2,[]);
       var m3=angular.module(myApp3,[]);
    </script>

angular提供了很多工具方法如:angular.bind,angular.copy,angular.extend

     function show(){
          alert(this);
      }
      angular.bind(document,show)();//改变this指向类似于jquery的$.proxy
      
      var a={
          name:"hello"
      }
      var b={
          age:"20"
      }
      var c=angular.copy(a);//拷贝对象
      var c=angular.copy(a,b);//a全部的覆盖b
      
      angular.extend(b,a);//这个是继承的操作

 

Angularjs笔记(一)

标签:

原文地址:http://www.cnblogs.com/yanwen2015/p/4744743.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!