zoukankan      html  css  js  c++  java
  • angularjs 基础

    angularjs 学习

    <div ng-app="hd" ng-controller="ctrl">
    	{{name}}
    </div>
    
    var m = angular.module('hd', []);
    m.controller('ctrl', ['$scope', function($scope){
    	$scope.name = 'cjw';
    }])
    

    ng-cloak 避免闪屏幕

    ng-bind和{{}}

    <h3 ng-bind="name"></h3>
    {{name}}
    

    双向绑定

    <div ng-app="cjw" ng-controller="ctrl">
    	<input type="text" ng-model="name">
    	{{name}}
    </div>
    <script>
    	var m = angular.module('cjw', []);
    	m.controller('ctrl', ['$scope', function($scope){
    		$scope.name = 'cjw';
    	}])
    </script>
    

    radio

    <input type="radio" ng-model="staus" ng-value="1">开启
    <input type="radio" ng-model="staus" ng-value="0">关闭
    

    checkbox

    <input type="checkbox" ng-model="video" ng-true-value="1" ng-false-value="0">
    

    select

    <select name="" id="" ng-model="city" ng-options="v.vlaue as v.name for v in data"></select>
    

    global 函数

    angular.version
    angular.uppercase
    angular.copy
    angular.forEach
    
    angular.toJson JSON.strigify()
    angular.fromJson JSON.parse()
    

    判断函数

    angular.isArray
    angular.isUndefined
    angular.isString
    angular.isObject
    angular.isNumber
    angular.isElement
    angular.equals
    

    ng-disabled 不可点击

    ng-repeat ng-class ng-class-odd ng-class-even

    <ul ng-repeat="(k, v) in data">
    	<li>{{v.name}}</li>
    	<li ng-class="{blue: v.id==1, orange: v.id==2}">{{v.url}}</li>
    	<li>{{k}}</li>
    </ul>
    

    ng-model-options

     <input type="text" ng-model="title" ng-model-options="{updateOn:'default blur',debounce:{default:2000,blur:0}}">
        {{title}}
    

    全选 反选

    <table>
    	<tr>
    		<td>全选 <input type="checkbox" ng-model="all"> </td>
    		<td></td>
    		<td></td>
    	</tr>
    	<tr ng-repeat="v in data">
    		<td><input type="checkbox" ng-checked="all"> </td></td>
    		<td>{{v.name}}</td>
    		<td>{{}}</td>
    	</tr>
    </table>
    

    ng-class

    <li ng-class="{blue: v.id==1, orange: v.id==2}">{{v.url}}</li>
    

    ng-style

    <span ng-style="{color:color,fontSize:size+'px'}">后盾人</span>
    

    事件

    ng-click
    ng-mouseover
    

    过滤器

    currency number
    {{price|currency:'¥':1}}
    {{price|number:2}}
    lowercase uppercase
    {{name|lowercase}}
    {{name|uppercase|lowercase}}
    limitTo
    {{data|limitTo:3:1}}
    date
    {{time|date:'yyyy年MM月dd日 HH时mm分ss秒'}}
    {{data|orderBy:'click':true}}
    {{data|filter:'后盾人':true}}
    
     $scope.data = $filter('orderBy')($scope.data,'id',true);
    
    $scope.status = {id: false, click: false, title: false};
            $scope.orderBy = function (field) {
                $scope.status[field]=!$scope.status[field];
                $scope.data = $filter('orderBy')($scope.data, field, $scope.status[field]);
            }
    

    $watch

     $scope.$watch('news', function (n, o) {
                $scope.error = n.title.length>3?'标题长度输入错误':'';
            }, true);
    

    指令

    m.directive('hdcms', [function () {
        return {
            restrict: 'AEC',//a attr e element  c class
            template: '指令'
        }
    }]);
    
    <div hd-cms color="orange">你好</div>
     m.directive('hdCms', [function(){
            return {
                restrict: 'AEC',
                template: function(elem, attr){
                    return "<span style='color:"+attr['color']+"'>"+$(elem).html()+"</span>";
                }
            }
        }])
    

    replace: false//是否替换本来节点

    m.directive('hdCms', [function () {
            return {
                restrict: 'EA',//a attr e element  c class
    //            replace: true,
    //            template:'abc'
                templateUrl: '../view/hdcms.html'
            }
        }]);
    

    scope: {color:'@hdColor'}
    scope: {color:'=hdColor'}
    scope: {color: '&hdColor'}

     @
    单项绑定的前缀标识符
    使用方法:在元素中使用属性,好比这样<div my-directive my-name="{{name}}"></div>,注意,属性的名字要用-将两个单词连接,因为是数据的单项绑定所以要通过使用{{}}来绑定数据。
    
    =
    双向数据绑定前缀标识符
    使用方法:在元素中使用属性,好比这样<div my-directive age="age"></div>,注意,数据的双向绑定要通过=前缀标识符实现,所以不可以使用{{}}。
    
    <
    单项绑定的前缀标识符,和=使用类似。不同的是改变内部scope不会反映到parent的scope
    
    使用方法:在元素中使用属性,好比这样<my-component my-attr="parentModel">,directive的定义scope: { localModel:'<myAttr' }。代码 
    
    &
    绑定函数方法的前缀标识符
    使用方法:在元素中使用属性,好比这样<div my-directive change-my-age="changeAge()"></div>,注意,属性的名字要用-将多个个单词连接。
    
    m.directive('hdCms', [function () {
            return {
                restrict: 'E',
                replace: true,
                templateUrl: '../view/57.html',
                controller: ['$scope', function ($scope) {
                    $scope.data = [
                        {id: 1, name: '后盾人'},
                        {id: 1, name: 'hdcms'},
                        {id: 1, name: 'hdphp'}
                    ];
                }]
            }
        }]);
    

    $interval $interval.cancel(id);

     $scope.getClientHeight=function(){
                $scope.clientHeight = $window.document.body.clientHeight;
            }
            $scope.getScrollHeight=function(){
                $scope.scrollHeight = $window.document.body.scrollHeight;
            }
            $scope.prompt=function(){
                $scope.content = $window.prompt('请输入内容');
            }
    
    m.controller('ctrl1', ['$scope', '$cacheFactory', function ($scope, $cacheFactory) {
            var obj = $cacheFactory('hdphp');
            //sessionStorage  localStorage
            obj.put('web', {name: '后盾人', url: 'houdunren.com'});
            obj.put('user', {name: '向军', mail: '2300071698@qq.com'});
            $scope.data = obj.get('web').name;
            //删除缓存数据
    //        obj.remove('web');
    //        obj.removeAll();
    //        obj.destroy();
    //        console.log(obj.get('web'));
    //        console.log(obj.get('user'));
        }]);
        m.controller('ctrl2', ['$scope', '$cacheFactory', function ($scope, $cacheFactory) {
            var obj = $cacheFactory.get('hdphp');
            $scope.data = obj.get('web').name;
        }]);
    

    $http

    m.controller('ctrl', ['$scope', '$http', function ($scope, $http) {
            $http({
                method:'get',
                url:'1.php'
            }).then(function(response){
                //成功时执行
                console.log(response);
                $scope.data = response.data;
            },function(response){
                //失败时执行  hdphp
                console.log(response);
            });
        }]);
    

    dao层:就是Model层,在后台时,这一层的作用,就要是写与数据库交互数据的一层,在angularJS里就主要是写ajax的。
    service层:主查写逻辑代码的,但在angularJS里也可以持久化数据(充当数据容器),以供不同的controller高用。
    controller层:即控制层,在angularJS里就是写控制器的。控制器里尽量不要写那些不必要的逻辑,尽量写在service层里。
    所以,就有了创建自定义服务的三种方式。

     var app = angular.module('myApp', []);
        app.factory('myFactory', function($http,$q) {
            var service = {};
            service.name = "张三";
            //请求数据
            service.getData = function(){
                var d = $q.defer();
                $http.get("url")//读取数据的函数。
                .success(function(response) {
                    d.resolve(response);
                })
                .error(function(){
                    d.reject("error");
                });
                return d.promise;
            }       
            return service;
        });
        app.controller('myCtrl', function($scope, myFactory) {
            //alert(myFactory.name);
            myFactory.getData().then(function(data){
                console.log(data);//正确时走这儿
            },function(data){
                alert(data)//错误时走这儿
            });;
        });
    
    <div ng-app="myApp" ng-controller="myCtrl">
        <h1>{{r}}</h1>
    </div>
    <script>
        var app = angular.module('myApp', []);
    
        app.service('myService', function($http,$q) {
            this.name = "service";
            this.myFunc = function (x) {
                return x.toString(16);//转16进制
            }
            this.getData = function(){
                var d = $q.defer();
                $http.get("ursl")//读取数据的函数。
                    .success(function(response) {
                    d.resolve(response);
                })
                    .error(function(){
                    alert(0)
                    d.reject("error");
                });
                return d.promise;
            }
        });
        app.controller('myCtrl', function($scope, myService) {
            $scope.r = myService.myFunc(255);
            myService.getData().then(function(data){
                console.log(data);//正确时走这儿
            },function(data){
                alert(data)//错误时走这儿
            });
        });
    </script>
    
  • 相关阅读:
    软件设计师1990年下午试题5(流程图解析)
    保存新浪网首页到本地(使用urllib)
    软件设计师1990年下午试题1(流程图解析)
    1992年高级程序员下午试题6
    Delphi调用JavaScript解析JSON
    判断是否联网
    存储相关基本概念
    马尔科夫算法 awk 实现
    awk 实例练习 (三)
    awk 实例练习(一)
  • 原文地址:https://www.cnblogs.com/caijw/p/9064198.html
Copyright © 2011-2022 走看看