angularjs directive实现控件过滤器功能

本文展示了如何使用 AngularJS 的 ng-model 和自定义指令进行数据格式化。第一部分给出了 HTML 代码中使用 ng-model 和 ng-options 的示例。第二部分展示了一个名为 'toString' 的自定义指令,该指令用于将模型值转换为字符串。第三部分是一个多参数示例,创建了一个 'limitNum' 指令,用于限制输入数值不超过指定的最大值。整个例子在实际应用中演示了 AngularJS 如何优雅地处理数据绑定和用户输入的限制。

1)html代码

<select ng-model="ColumnModel.Category" 
ng-options="s.Code as s.Name for s in CategoryList" 
ng-change="categoryChange()" to-string>
</select>

2)angularjs代码

app.directive("toString", function () {
            return {
                restrict: "A",
                require: "ngModel",
                link: function (scope, elem, attr, ngModelCtr) {
                    ngModelCtr.$formatters.push(function (viewValue) {
                        if (typeof viewValue == "undefined") {
                            return '';
                        } else {
                            return viewValue.toString()
                        }
                    })
                }
            }
        });

3)多参数

<html ng-app="my_app">
	<head>
		<meta name="viewport" content="width=device-width" />
		<script type="text/javascript" src="js/angular.min.js"></script>
		<script type="text/javascript">
			var app = angular.module("my_app", []);
			app.controller('my_controller', function($scope) {
				$scope.nums = [{
					id: 1,
					num: 50,
					max: 100
				}, {
					id: 1,
					num: 100,
					max: 100
				}, {
					id: 1,
					num: 200,
					max: 100
				}];
			});

			app.directive("limitNum", function() {
				return {
					restrict: "A",
					require: "ngModel",
					scope: {
						max: '='
					},
					link: function(scope, elem, attr, ngModelCtr) {
						ngModelCtr.$formatters.push(function(input) {
							if(input > scope.max) {
								return scope.max;
							} else {
								return input;
							}
						})
					}
				}
			});
		</script>
	</head>

	<body ng-controller="my_controller">
		<div>
			<ul>
				<li ng-repeat="item in nums">
					<input type="number" ng-model="item.num" limit-num max="item.max" />
				</li>
			</ul>
		</div>
	</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值