【发布时间】:2014-09-04 20:55:40
【问题描述】:
我正在创建一个封装标签的输入指令和一些错误消息,但我遇到了 ng-minlength 和 ng-maxlength。问题是他们不会填充模型值,直到它是一个有效值,所以我的父作用域可以显示一个值而我的指令不显示,反之亦然。查看plunk 了解我的意思的示例。
解决这个问题的唯一方法是定义我自己的 minlength 和 maxlength 验证器吗?是否有某种方式配置此行为,以便始终填充模型?我想在我的指令中使用所有内置的验证器,所以毫无疑问这将是所有这些验证器的问题,我宁愿不重新定义它们。
HTML:
<!DOCTYPE html>
<html>
<head>
<script data-require="angular.js@*" data-semver="1.3.0-beta.5" src="https://code.angularjs.org/1.3.0-beta.5/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-app="app" ng-controller="Controller">
<label>Outer scope 1</label>
<input name="input1" type="text" ng-model="model1" ng-minlength="4"/>
<br/>
<label>Directive scope 1</label>
<input-dir ng-model="model1" ng-minlength="0"></input-dir>
<br/>
<br/>
<br/>
<label>Outer scope 2</label>
<input name="input3" type="text" ng-model="model2"/>
<br/>
<label>Directive scope 2</label>
<input-dir ng-model="model2" ng-minlength="4"></input-dir>
</body>
</html>
Javascript:
var app = angular.module('app', []);
app.controller('Controller', function($scope){
$scope.model1 = "Model1";
$scope.model2 = "Model2";
});
app.directive('inputDir', function(){
return {
restrict: 'E',
template: '<input type="text" ng-model="model" ng-minlength="{{ minlength }}" />',
scope: {
model: '=ngModel',
minlength: '=ngMinlength'
}
};
});
【问题讨论】:
-
我猜viewvalue只有在有效状态下才会传递给模型
-
是的,除了实现我自己的验证器之外,还有其他人对此有什么建议吗?
标签: angularjs angularjs-directive angularjs-scope