• angular学习笔记(十九)-指令修改dom


    本篇主要介绍angular使用指令修改DOM:

    使用angular指令可以自己扩展html语法,还可以做很多自定义的事情.在后面会专门讲解这一块的知识,这一篇只是起到了解入门的作用.

    与控制器,过滤器,服务,一样,可以通过模块实例的directive的方法来创建指令:

    var someModule = angular.module('SomeModule',[]);

    someModule.directive('directiveName',function(){

         return {

             link: function(scope,elements,attrs,controller){

             }

         }

    });

    directive传入两个参数:

    第一个参数是指令的名字;

    第二个参数是一个工厂函数:

    函数返回一个对象,对象的link方法的函数有四个参数:

    scope:获取外层scope的引用

    elements:它所存在的DOM元素

    attrs:传递给指令的一个属性数组

    controller:DOM元素上的控制器

    下面来看个简单的小例子,在html5中,元素有autofocus属性,添加了这个属性的元素,会自动获取焦点.我们可以使用angular来写一个这样的指令:

    我们让第二个button在打开的时候就获取焦点,所以按回车就相当于点击了这个按钮:

    <!DOCTYPE html>
    <html ng-app="AutoFocus">
    <head>
      <title>16.1使用指令修改DOM</title>
      <meta charset="utf-8">
      <script src="../angular.js"></script>
      <script src="script.js"></script>
      <style type="text/css">
        *{
          font-family:'MICROSOFT YAHEI';
          font-size:12px
        }
      </style>
    </head>
    <body>
    <div ng-controller="focus">
      <button ng-click="nofocus()">没有焦点</button>
      <br/>
      <button myautofocus ng-click="hasfocus()">有焦点</button>
      <br/>
      <br/>
      <span>{{text}}</span>
    </div>
    </body>
    </html>
    var autoFocus = angular.module('AutoFocus',[]);
    autoFocus.controller('focus',function($scope){
        $scope.text="没有点击任何按钮";
        $scope.nofocus = function(){
            $scope.text="没有点击任何按钮";
        };
        $scope.hasfocus = function(){
            $scope.text="点击了有焦点按钮";
        };
    });
    autoFocus.directive('myautofocus',function(){
        return {
            link: function(scope,elements,attrs,controller){
                elements[0].focus();
            }
        }
    });

    一.创建模块AutoFocus

    二.通过模块的controller方法创建控制器focus

    三.通过模块的directive方法创建指令myautofocus

        myautofocus的工厂函数就是实现元素自动获取焦点这一功能

    效果截图:

    打开页面时:

    按下回车后:

        

  • 相关阅读:
    关于正餐智能POS6.0.1.1改版后,点击反结账进入点菜界面后无法进行加菜的FAQ
    关于正餐智能POS6.0.1.1改版后,订单模块无法进行部分退款的FAQ
    退款证书相关
    简易付主副机和打印机配置
    秒点直连操作文档
    智能POS打印配置&常见问题FAQ 12-14 后期持续更新
    ERP主副机和打印机配置FAQ
    ASP.NET没有魔法——ASP.NET MVC Controller的实例化与执行
    ASP.NET没有魔法——ASP.NET MVC 路由的匹配与处理
    ASP.NET没有魔法——ASP.NET MVC路由
  • 原文地址:https://www.cnblogs.com/liulangmao/p/3754670.html
Copyright © 2020-2023  润新知