AngularJS用户选择器指令实例分析


Posted in Javascript onNovember 04, 2016

本文实例分析了AngularJS用户选择器指令。分享给大家供大家参考,具体如下:

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

用户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 对数组进行操作,需要注意的是如果监控数组,需要使用深度监控。

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
Apr 24 Javascript
js实现页面转发功能示例代码
Aug 05 Javascript
JS去除数组重复值的五种不同方法
Sep 06 Javascript
javascript 用函数语句和表达式定义函数的区别详解
Jan 06 Javascript
JavaScript基础教程——入门必看篇
May 20 Javascript
第九篇Bootstrap导航菜单创建步骤详解
Jun 21 Javascript
javascript类型系统——undefined和null全面了解
Jul 13 Javascript
vue模板语法-插值详解
Mar 06 Javascript
重新认识vue之事件阻止冒泡的实现
Aug 02 Javascript
vue.js编译时给生成的文件增加版本号
Sep 17 Javascript
详解Vue依赖收集引发的问题
Apr 22 Javascript
一篇文章告诉你如何实现Vue前端分页和后端分页
Feb 18 Vue.js
AngularJS实现动态编译添加到dom中的方法
Nov 04 #Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
Nov 04 #Javascript
AngularJS中watch监听用法分析
Nov 04 #Javascript
AngularJS中的DOM操作用法分析
Nov 04 #Javascript
JS对大量数据进行多重过滤的方法
Nov 04 #Javascript
AngularJS模板加载用法详解
Nov 04 #Javascript
jQuery 遍历map()方法详解
Nov 04 #Javascript
You might like
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
2009/03/03 PHP
PHP 可阅读随机字符串代码
2010/05/26 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
jquery选择器(常用选择器说明)
2010/09/28 Javascript
jQuery timers计时器简单应用说明
2010/10/28 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
Js event事件在IE、FF兼容性问题
2011/01/01 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
JS简单实现数组去重的方法示例
2017/03/27 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
微信小程序实现animation动画
2018/01/26 Javascript
security.js实现的RSA加密功能示例
2018/06/06 Javascript
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
ipython和python区别详解
2019/06/26 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
高中生学习生活的自我评价
2013/11/27 职场文书
社会实践心得体会
2014/01/03 职场文书
创业计划书的主要内容有哪些
2014/01/29 职场文书
文明工地标语
2014/06/16 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
2014年教务处工作总结
2014/12/03 职场文书
Python+Tkinter打造签名设计工具
2022/04/01 Python