angular的DEMO(用来练习和顺便看看)

  inflector(辅助) 将用户输入的字符串转化成驼峰或者空格或者底线的小插件;

  这个是一个小的过滤器, 平常也是用不到的, 合格是过滤器的代码:

        app.filter("inflector", function() {
            var reg = new RegExp("","gi");
            return function(value ,type) {
                switch( type ) {
                    case "underscore" :
                        value = value.replace(/[\s-_]/gi,"_");
                    break;
                    case "variable" :
                        value = value.replace(/[\s-_](\w)/gi,function($0,$1){
                            return $1.toUpperCase();
                        });
                    break;
                    default :
                        value = value.replace(/[\s-_]/gi," ");
                    break;
                };
                return value;
            };
        });

  下面的全部的代码,点击按钮即可在线运行:

<html ng-app="app">
    <head>
        <meta charset="utf-8" />
        <script src="http://cdn.bootcss.com/jquery/2.1.1-rc2/jquery.min.js"></script>
        <script src="http://cdn.bootcss.com/angular.js/1.3.0-beta.13/angular.min.js"></script>
    </head>
<body ng-controller="test0Controller">
    <label>
        <input type="radio" value="humanize" ng-model="inflectorType"> Humanize (Default)</label>
    <label>
        <input type="radio" value="underscore" ng-model="inflectorType"> Underscore</label>
    <label>
        <input type="radio" value="variable" ng-model="inflectorType"> Variable</label>

    <input placeholder="Enter some text to inflect" ng-model="inflectorText">
    <p>{{inflectorText|inflector:inflectorType}}</p>

    <script>
        //初始化用户模块;
        var app = angular.module(‘app‘, []);
        app.controller("test0Controller",function($scope){
            $scope.inflectorText = "normal test_hehe-nice";
            $scope.inflectorType = "humanize";
        });
        app.filter("inflector", function() {
            var reg = new RegExp("","gi");
            return function(value ,type) {
                switch( type ) {
                    case "underscore" :
                        value = value.replace(/[\s-_]/gi,"_");
                    break;
                    case "variable" :
                        value = value.replace(/[\s-_](\w)/gi,function($0,$1){
                            return $1.toUpperCase();
                        });
                    break;
                    default :
                        value = value.replace(/[\s-_]/gi," ");
                    break;
                };
                return value;
            };
        });
    </script>
</body>
</html>

  这一个实例主要想表达的是通过自定义的指令绑定事件, angular官方提供的指令也是这样子的:

<html ng-app="app">
    <head>
        <meta charset="utf-8" />
        <script src="http://cdn.bootcss.com/jquery/2.1.1-rc2/jquery.min.js"></script>
        <script src="http://cdn.bootcss.com/angular.js/1.3.0-beta.13/angular.min.js"></script>
    </head>
<body>
    <div ng-controller="kepressController">
        <textarea ui-keypress="keypressCallback">
        </textarea>
    </div>
    <script>
        //初始化用户模块;
        var app = angular.module(‘app‘, []);
        app.controller("kepressController",function($scope){
            $scope.keypressCallback = function(e) {
                e.target.value += "enter";
                console.log(e)
                alert("输入enter");
                e.preventDefault();
            };
        });

        app.directive("uiKeypress",function($parse) {
            return {
                scope : {
                    keypress : "&uiKeypress"
                },
                compile : function(elem, attrs) {

                    return function(scope, $elem , $attrs ) {
                        $($elem).bind("keypress", function(ev) {
                            if( +ev.charCode === 13 ) {
                                scope.keypress()(ev);
                            };
                        });
                    }
                }
            }
        });

    </script>
</body>
</html>

  

  这个又是一个过滤器的例子,直接通过一个闭包创建一个排序的函数,简单粗暴:

<html ng-app="app">
    <head>
        <meta charset="utf-8" />
        <script src="http://cdn.bootcss.com/jquery/2.1.1-rc2/jquery.min.js"></script>
        <script src="http://cdn.bootcss.com/angular.js/1.3.0-beta.13/angular.min.js"></script>
    </head>
<body>
    <div ng-controller="test0Controller">
        <select ng-model="sortType">
            <option value="firstName">firstName</option>
            <option value="id">id</option>
            <option value="gender">gender</option>
        </select>
        <div>
            {{items | sort : sortType | json}}
        </div>
    </div>
    <script>
        //初始化用户模块;
        var app = angular.module(‘app‘, []);
        app.controller("test0Controller",function($scope){
            $scope.inflectorText = "normal test_hehe-nice";
            $scope.inflectorType = "humanize";
            $scope.items = [
                { firstName: ‘Dean‘, lastName: ‘Sofer‘,
                id: 1, gender: ‘Male‘ },
                { firstName: ‘Dean‘, lastName: ‘Kuntz‘,
                id: 2, gender: ‘Male‘ },
                { firstName: ‘Peter‘, lastName: ‘Piper‘,
                id: 3, gender: ‘Female‘ },
                { firstName: ‘Peter‘, lastName: ‘Darwin‘,
                id: 4, gender: ‘Male‘ },
                { firstName: ‘Janet‘, lastName: ‘Piper‘,
                id: 5, gender: ‘Female‘ },
                { firstName: ‘Dan‘, lastName: ‘Doyon‘,
                id: 6, gender: ‘Male‘ },
                { firstName: ‘Andy‘, lastName: ‘Joslin‘,
                id: 1, gender: ‘Male‘ },
            ];
        });
        //排序的指令;
        app.filter("sort",function() {
            var sortClosure = function( name ){
                return function(a,b) {
                    if( a[name] < b[name] ){
                        return -1;
                    }else{
                        return 1;
                    }
                }
            };
            return function(value, type) {
                var sortFn = sortClosure(type);
                //return value.sort(sortFn);
                return angular.copy(value).sort(sortFn);
            };
        });

    </script>
</body>
</html>

   总结:angular入门很简单的,但是提升比较难吧

时间: 2024-08-01 17:41:22

angular的DEMO(用来练习和顺便看看)的相关文章

angular phone demo

git checkout ...: Check out a particular branch or a tagged version of the code to hack on. JavaScript使用闭包或者回调来响应非同步的有意义的数据

野兽的Angular Api 学习、翻译及理解 - - form.FormController、ngModel.NgModelController

野兽的ng api学习 -- form.FormController.ngModel.NgModelController form.FormController FormController跟踪所有他所控制的和嵌套表单以及他们的状态,就像有效/无效或者脏值/原始. 每个表单指令创建一个FormController实例. 方法: $addControl(); 给表单注册一个控制器. 使用了ngModelController的输入元素会在连接时自动执行. $removeControl(); 给表单注

@野兽的Angular Api 学习、翻译及理解 - - angular.module

@野兽的 ng api 学习 -- angular.module angular.module 创建一个全局的可用于检索和注入的Angular模块.所有Angular模块(Angular核心模块或者第三方模块)想要在应用里实现,都需要使用这个注入机制. 格式:angular.module(name,[requires],[configFn]); name :  string  创建的模块名称. [requires]: 字符串的数组  代表该模块依赖的其他模块列表,如果不依赖其他模块,则为空数组.

野兽的Angular Api 学习、翻译及理解 - - ngRoute Angular自带的路由

野兽的ng api学习 -- ngRoute ngRoute $routeProvider 配置路由的时候使用. 方法: when(path,route); 在$route服务里添加一个新的路由. path:该路由的路径. route:路由映射信息. controller:字符串或函数,指定控制器. controllerAs:一个用于控制器的标识符名称.. template:字符串或函数,html模板. templateUrl:字符串或函数,html模板的地址. resolve:对象,一个可选的

野兽的Angular Api 学习、翻译及理解 - - $templateCache 和 $templateRequest

野兽的ng api学习 -- $templateCache 和 $templateRequest $templateCache 第一次使用模板,它被加载到模板缓存中,以便快速检索.你可以直接将模板标签加载到缓存中,或者通过$templateCache服务. 通过script标签: <script type=”text/ng-template” id=”template.html”> <p>This is the content of the template</p> &

野兽的Angular Api 学习、翻译及理解 - - $sce 和 $sceDelegate

野兽的ng api学习 -- $sce 和 $sceDelegate $sce $sce 服务是AngularJs提供的一种严格上下文逸出服务. 严格上下文逸出服务(翻译水平有限,较渣...) 严格上下文逸出(SCE)是一种需要在一定的语境中导致AngularJS绑定值被标记为安全使用语境的模式.由用户通过ng-bind-html绑定任意HTML语句就是这方面的一个例子.我们称这些上下文语境为特权或者SCE. 下面代码是简化了的ngBindHtml实现(当然,这不是完整版ngBindHtml源码

野兽的Angular Api 学习、翻译及理解 - - $q 承诺与延迟

野兽的ng api学习 -- $q $q 一个帮助处理异步执行函数的服务.当他们做完处理时,使用它们的返回值(或异常). 受 Kris Kowa’s Q 的启发,这是一个实现promise/deferred对象的启用. $q的两种方式---这是一个更类似于Kris Kowal Q或jQuery的递延实现,另一种在一定程度上类似的ES6承诺. Deferred Api 一个被$q.defer()调用的deferred的新实例. deferred对象的目的是暴露相关承诺实例,以及APIs被执行的成功

野兽的Angular Api 学习、翻译及理解 - - $animate

野兽的ng api学习 -- $animate $animate $animate服务提供了基本的DOM操作功能如在DOM里插入.移除和移动元素,以及添加和删除类.这个服务是ngAnimate的核心服务,为CSS和Javascript提供了高档次的动画. $animate在Angular核心都是有效的,无论如何,这个服务为了支持所有动画须包含ngAnimate模块.否则,$animate只能做简单的DOM操作. 方法: enter(element,parent,after,[done]); 在D

野兽的Angular Api 学习、翻译及理解 - - ngInclude、ngTransclude

野兽的 ng api 学习 - - ngInclude.ngTransclude 这2个都是HTML DOM嵌入指令 ngInclude 读取,编译和插入外部的HTML片段. 格式:ng-include=“value”<ng-include src=”value” onload=“ex”autoscroll=“str”></ng-include>  class=”ng-include:value” value:string类型  模板id或者模板url ex:表达式,载入的时候执行