码迷,mamicode.com
首页 > 其他好文 > 详细

ANGULAR 开发用户选择器指令

时间:2015-09-12 20:21:01      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

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

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

ANGULAR 开发用户选择器指令

标签:

原文地址:http://www.cnblogs.com/yg_zhang/p/4803439.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!