如何在指令的情况下更改下拉列表的默认文本,并对指令应用所需的验证
How to change default text of dropdown in case of directives and apply required validation on directive
实际上我有两个问题。我已经为下拉列表创建了一个指令,所以我不必重写代码。我的默认选项是"选择",但我想更改默认选项。如果它的位置是下拉列表,那么它的文本应该是"选择位置",如果它是部门,那么它应该通过在指令中传递文本来"选择部门"。另一个问题是如何对下拉指令进行验证。如果我将其应用于指令html,那么它将应用于所有下拉指令。但我想把它应用到一些指令中。这是我的密码。dropdown.html
<select name="ngModel" id="ngModel" ng-model="ngModel" ng-options="option.Id as option.Name for option in ddmodel">
<option value="">Select</option>
</select>
dropdown.directive.js
(function (app) {
'use strict';
app.directive('dropdown', dropdown);
function dropdown() {
return {
restrict: 'E',
scope: {
ddmodel: '=',
ngModel: '=',
message: "@",
id: '@'
},
templateUrl: '/App/directives/dropdown.html',
link: function (scope, element, attrs) {
scope.isOpened = false;
}
};
}
})(angular.module("IIU"));
在我的代码中使用指令
<dropdown message="Select Location" ddmodel="DDCollections.LocationList" id="LocationId" name="LocationId" ng-model="staffContract.LocationId">
</dropdown>
我可以通过消息属性传递消息。我们将不胜感激。
使用此代码
var app = angular.module('test', []);
app.controller('testController', function($scope) {
$scope.LocationList = [{
Id: 1,
Name: 'Location one .. '
}, {
Id: 2,
Name: 'Location two .. '
}, {
Id: 3,
Name: 'Location three .. '
}, ];
$scope.DepartmentList = [{
Id: 1,
Name: 'Department one .. '
}, {
Id: 2,
Name: 'Department two .. '
}, {
Id: 3,
Name: 'Department three .. '
}, ];
});
app.directive('dropdown', dropdown);
function dropdown() {
return {
restrict: 'E',
scope: {
ddmodel: '=',
ngModel: '=',
message: "@",
id: '@',
validate:'@',
},
template: '<select ng-required="{{ validate }}" name="ngModel" id="ngModel" ng-model="ngModel"' +
'ng-options="option.Id as option.Name for option in ddmodel">' +
'<option value=""> {{ message }} </option>' +
'</select>',
link: function(scope, element, attrs) {
scope.isOpened = false;
}
};
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>
<div ng-app="test">
<div ng-controller="testController">
<form >
<h3>
dropdown location without error
</h3>
<dropdown message="Select Location" ddmodel="LocationList" id="LocationId" name="LocationId" ng-model="LocationId" validate='true'>
</dropdown>
<h3>
dropdown department with error
</h3>
<dropdown message="Select Department" ddmodel="DepartmentList" id="DepartmentId" name="DepartmentId" ng-model="DepartmentId" validate='false'>
</dropdown>
<br>
<br>
<input type="submit">
</form>
</div>
</div>
1-要用您传递的message
替换默认值,只需将默认选项文本替换为message
的值,即
<select name="ngModel" id="ngModel" ng-model="ngModel"
ng-options="option.Id as option.Name for option in ddmodel">
<option value=""> {{ message }} </option>
</select>
2-要为特定选择启用错误,您可以传递另一个变量来指示禁用或禁用errors
,基于该变量,您可以决定使用类似ng-if
的东西来显示或隐藏errors
,如
<!-- show-errors true or false -->
<dropdown message="Select Location" ddmodel="LocationList"
id="LocationId" name="LocationId" ng-model="LocationId" show-errors="false">
</dropdown>
.....
restrict: 'E',
scope: {
ddmodel: '=',
ngModel: '=',
message: "@",
id: '@',
showErrors: "="
},
.....
<select name="ngModel" id="ngModel" ng-model="ngModel" ng-options="option.Id as option.Name for option in ddmodel">
<option value=""> {{ message }} </option>
</select>
<span ng-if="showErrors">errors</span>
这是一个简单的演示
相关文章:
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 从html创建一个指令,该指令按类名应用函数
- AngularJS指令部分应用的函数don'不起作用
- 如何在给定的angular应用程序中获取所有指令名称
- angular应用程序中的浏览器功能检测:使用服务、指令、控制器
- 如何更好地利用angular.js应用程序中的ng repeat和指令
- 使用指令将小部件集成到有角度的应用程序中
- 将数学规则(如rnd,max等)应用于用户使用AngularJS指令输入的值
- 在 Angular 指令中,如何在删除事件后重新应用事件侦听器
- 将新元素作为指令的默认元素应用
- 延迟加载角度应用程序不会加载指令
- 将jQuery插件转换为AngularJS指令 - 如何应用if/else
- 在指令中使用模板网址会冻结应用程序
- 角度 ui 路由器的问题 - 我无法将过滤器应用于指令中的重复
- Meteor AngularJS应用程序未加载指令
- 使用应用程序级解析AngularJS的动态指令模板
- 如何在指令的情况下更改下拉列表的默认文本,并对指令应用所需的验证
- ngOptions在自定义指令中应用了两次
- AngularJS指令应用错误的数据
- 对角度指令应用作用域并调用对象函数