Angular.js -- 基础(1)

1.Angular 介绍(Chorme公司):

(1)Angular.js 是一个 JavaScript 框架,它可通过 <stript> 标签添加到 HTML 页面中(建议放到 <body> 元素的底部);

(2)Angular.js 通过指令扩展了 HTML,且通过表达式绑定到 HTML 中;

(3)Angular.js 的特征:模块化;双向数据绑定;标签语义化;依赖和注入;

(4)Angular.js 是 MVC 开发模式(或者也可以称为 MVVM 开发模式);

2.MVC 开发模式:

(1)MVC 全称:model(模块) views(视图)  Controller(控制器);

         model:一般是用来处理数据(读取,设置),操作数据库;

         views:一般用来展示数据,也是 HTML 页面上的显示;

         Controller:一般用来做连接 model 和 views 的一个桥梁;

3.使用 bower 下载安装 angular:

(1)bower 初始化:bower  init;

(2)安装 angular:bower  install  angular  --save;(可通过 .bowerrc 更改管理安装包的默认文件夹)

(3)在 HTML 中引用 angular.js 文件;

4.Angular.js 中的指令(部分):

(1)在 HTML 中两个必须要有的指令:

         ng-app=" ":这个可写在任何标签中,表示 angular 要管理这个标签内的代码;

         ng-controller=" ":这个是 angular 指定的控制器;

(2)数据绑定的指令: 

         {{ }}ng-bind=" ";      

<div ng-app="App">      //创建模块,指定angular要接管的元素
    <ul ng-controller="Demo">        //创建一个控制器
        //下面这两种指令页面中有时会有数据闪烁的效果;
        <li>{{name}}:{{age}}</li>      
        <li ng-bind="name"></li>       //官方推荐使用
        //下面这两种指令可以解决闪烁的效果(不常用);
        <li ng-clock>{{name}}:{{age}}</li>
        <li ng-bind-template="{{name}}:{{age}}"></li>
        //以上四个都是数据绑定的指令;但是 ng-bind 只能写入一个数据;
    </ul>
</div>
<script>
    //angular是一个全局对象,底下有很多的方法和属性;
    //创建一个模块
    var App = angular.module("App",[]);     
    //第一个参数是自己创建的模块,第二个参数是数组,里面存放需要用到的模块;
    //App就是新创建好的模块,底下也是有很多的方法和属性;
    App.controller("Demo",["$scope",function($scope){
        $scope.name = "jack";
        $scope.age = "22"
    }])
    //第一个参数是自己的控制器的名称,第二个参数是数组,里面是依赖和注入的部分;
    //$scope是一个作用域,是一个空的对象,也是一个model;
</script>

(3)其他指令:

 ng-model:把元素的值(input 框中的值)绑定到数据中; 

<div ng-app>       //这个指令没有写值的时候,可以不用谢js代码
    <input type="text" ng-model="text">
    <h1>{{text}}</h1>
</div>
//结果:input 框中输入的值会实时的更新在 h1 标签中;

ng-repeat:就是 js 中的循环;

<body ng-app="App">
    <div ng-controller="Cycle">
        //第一种循环方式
        <ul ng-repeat="data in arr">
            <li>{{data.uname}}</li>
            <li>{{data.age}}</li>
            <li>{{data.hobby}}</li>
            <li>{{data.game}}</li>
        </ul>
        //第二种循环方式
        <ul>
            <li ng-repeat="data in arr01">{{data.uname}}:{{data.age}}</li>
        </ul>
        //第三种循环方式,可选择某一个值进行输出
        <ul>
            <li ng-repeat="data in arr02" ng-switch on="data">
                <span ng-switch-when="html">{{data}}</span>
                <span ng-switch-when="js">{{data}}</span>
                <span ng-switch-when="css">{{data}}</span>
            </li>
        </ul>
    </div>
</body>
<script>
    var App = angular.module("App",[]);
    App.controller("Cycle",["$scope",function($scope){
        $scope.arr = [{         //数组中单个对象
            "uname" : "jack",
            "age" : 22,
            "hobby" : "吃鸡",
            "game" : "旅游"
        }];
        $scope.arr01 = [          //数组中多个对象
            {"uname" : "小明","age":10},
            {"uname" : "小花","age":20},
            {"uname" : "小伟","age":25}
        ];
        $scope.arr02 = ["html","js","css"]           //数组
    }]) 
</script>
<style>
    .red{
        color:#f00;
    }
</style>
<body ng-app="App">
    <div ng-controller="Demo">
        <ul>
            <li ng-show="true">1.这个指令用来显示,为true时,是显示,反之隐藏</li>

            <li ng-hide="true">2.这个指令用来隐藏,为true时,是隐藏,反之显示</li>

            <li ng-if="true">hello</li>
            //3.判断这个元素是否存在,为true时,表示存在,显示在页面上,为false时,会将这条代码当成注释去解析

            <li><img ng-src="{{path}}">4.用这个指令可以避免发送两次请求</li>

            <li><input type="text" name="" value="123456" ng-readonly="true"></li>
            //5.这个指令为true时,是input框中value的值不可改变,也不可输入内容;

            <li><input type="text" name="" value="123456" ng-disabled="true"></li>
            //6.这个指令为true时,表示这个input框已经禁用;

            <li><button ng-click="show()">7.点击弹出jack</button></li>

            <li ng-class="{red:true,blue:false}">8.这个指令第一个参数是类名,第二个参数为true时,样式显示出来,反之不显示样式</li>

            <li ng-init="name='jack';age=20"> 
                <span>{{name}}</span>
                <span>{{age}}</span>
            </li>
            //9.这个指令是初始化作用域,会将所写的数据显示在页面上
        </ul>
    </div>
    //注:true和false也可以转换成"1"和"0"
    <script>
        var App = angular.module("App",[]);
        App.controller("Demo",["$scope",function($scope){
            $scope.uname = "jack";
            $scope.path = "./images/312745.jpg";
            $scope.show = function(){
                alert($scope.uname)
            }
        }])
    </script>
</body>

5.Angular.js 自定义指令:

<body ng-app="App">
    //模板
    <div tag></div>      //属性
    <div class="tag"></div>      //类名
    <tag></tag>       //元素
    <!-- directive:tag -->       //注释

    <script>
        var App = angular.module("App",[]);
        //通过directive方法自定义指令,第一个参数是自定义的指令,第二个是参数是回调函数;
        App.directive("tag",function(){
            //直接返回一个对象,返回自定义指令中自己写的内容;
            return{
                restrict : "ECMA",
                //指定哪些模板可以使用自定义指令中内容,可随便写;
                // E :element(元素)
                // C :class(类名)
                // M :mark replace (注释),注:replace必须为true,为false不会显示在页面中
                // A :attribute(属性)
                template : '<h1>hello world</h1>',     //自己所写的内容
                //当 template 为一个地址时,必须要在服务器中去跑;
                //例:templateUrl : "./body.html"   //可在body.html中写入内容    
                replace : true 
                //是否用所写的内容去替换HTML页面中的模板,为true时,会替换;为false时,内容会显示在模板下
            }
        })
    </script>
</body>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值