• ANGULAR 开发用户选择器指令


    在开发表单时,我们需要使用经常需要使用到用户选择器,用户的数据一般使用如下方式存储:

    用户1,用户2,用户3

     

    我们可以使用angular指令实现选择器。

    <!DOCTYPE html>
    <html ng-app="app">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <script src="../assets/js/angular.min.js"></script>
        <link rel="stylesheet" href="../assets/css/bootstrap.min.css">
        <link rel="stylesheet" href="../assets/css/bootstrap-theme.min.css">
        <link rel="stylesheet" href="../assets/css/component.css">
        <link rel="stylesheet" href="../assets/css/form.css">
        <link rel="stylesheet" href="../assets/css/font-awesome.min.css">
         <script src="../assets/js/angular.min.js"></script>
         
         <script type="text/javascript">
             var base=angular.module("directive",[]);
             base.directive('htSelector', function() {
                return {
                    restrict : 'AE',
                    templateUrl:'selector.html',
                    scope: {
                        name: '=name'
                    },
                    link: function(scope, element, attrs) {
                        var aryName=scope.name.split(",");
                        scope.names=aryName;
                        scope.remove=function(i){
                            aryName.splice(i,1);
                        };
                        scope.$watch(
                                "names",
                                function (newValue,oldValue) { 
                                    if(newValue!=oldValue){
                                        scope.name=aryName.join(",");
                                    }
                                },true
                        );
                        scope.selectUser=function(){
                            aryName.length = 0;
                            aryName.push("韩信");
                        }
                    }
                }
            });
         
            var app=angular.module("app",["directive"]);
            app.controller('ctrl', ['$scope',function($scope){
                $scope.names='自由港,马云,刘强东';
                $scope.getData=function(){
                    console.info($scope.names)
                }
            }])
            
         </script>
    </head>
    <body ng-controller="ctrl">
        <div  ht-selector  name="names"></div>
        <button ng-click="getData()">获取数据</button>
    </body>
    </html>

    模版URL

    <div>
        <span ng-repeat="item in names">
                 {{item}}<a class="btn btn-xs  fa-remove"  title="移除该项" ng-click="remove($index)"></a>
        </span>
        <a class="btn btn-sm btn-primary fa-search" ng-click="selectUser()">选择</a>
    </div>

    在指令中,使用了独立的scope,传入的数据为使用逗号分割的字符串,我们使用了数组进行操作。

    这里的技巧是在字符串和数组之间进行转换。

    这里使用了指令独立的scope,使用了watch 对数组进行操作,需要注意的是如果监控数组,需要使用深度监控。

  • 相关阅读:
    js 判断用户是否联网
    vue cli 2.9.6 低版本安装失败
    'webpack-dev-server' 不是内部或外部命令,也不是可运行 的程序 或批处理文件。
    Jenkins创建运行用例
    python的类变量和成员变量
    Airtest移动端自动化测试环境搭建 一
    pytest使用总结笔记
    Python单元测试框架之pytest---如何执行测试用例
    UI自动化之分层思想pom模式
    【Fiddler篇】抓包工具之Filters(过滤器)进行会话过滤
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/4803439.html
Copyright © 2020-2023  润新知