初学angular-简单的angular指令

实现一个简单的input清空内容,且清空对应ngModel

前台部分

<html ng-app="hpapp">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="css/test.css">
    <script type="text/javascript" src="js/angular.js"></script>
    <script type="text/javascript" src="js/inputempty.js"></script>
    <script type="text/javascript" src="js/info.js"></script>
</head>

<body>
    <div ng-controller="InfoCtrl">
        <input type="text" name="email" ng-model="model.email" inputempty maxvalue="10">
        <br>
        <br>
        <br>
        <input type="text" name="text" ng-model="model.text" inputempty>
        <br>
        <br>
        <br> {{model.email +"*"+ model.text}}
    </div>
</body>

</html>

控制器部分  info.js

1 var app = angular.module('hpapp');
2 app.controller('InfoCtrl', function($scope) {
3     $scope.model = {
4         email: '1073520680',
5         text: ''
6     };
7 });

指令部分

var app = angular.module('hpapp', []);
app.directive('inputempty', function() {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function(scope, elem, attrs, ctrl) {
            var close = '<span class="clear"></span>';
            elem.next().bind('click', function() {
                ctrl.$setViewValue('');
                ctrl.$render();
            });
        }

    };
});
ctrl.$setViewValue('');//清空ngModel
elem.val('');//清空表单

css 部分

.closeW{
    width: 16px;
    height: 16px;
    color: #ccc;
    text-align: center;
    line-height: 16px;
    border: 1px solid #ccc;
    border-radius:16px;
    float: left;
}
.content{
    width: 530px;
    border:1px solid #ccc;
    position: relative;
}
.editW{
    width: 480px;
    min-height: 280px;
    margin: 0;
    padding: 10px;
    outline: none;
}
.clear{
    clear: both;
}
.empty{
    width: 16px;
    height: 16px;
    color: #ccc;
    text-align: center;
    line-height: 16px;
    border-radius:16px;
    border: 1px solid #ccc;
    margin-left: -20px;    
    cursor: pointer;
    display: inline-block;
}

.clear {
    display: inline-block;
    width: 20px;
    height: 20px;
    position: absolute;
    margin-left: -20px;
    cursor: pointer;
    background: url('http://fanyi.baidu.com/static/i18n/zh/widget/translate/main/translateio/clear_9154fd87.png') no-repeat -20px -10px;
}

input{
    padding-right:20px;
    padding-left: 5px;
}
原文地址:https://www.cnblogs.com/happen-/p/5141213.html