AngularJS'禁用'选项'HTML5元素
What is the 'AngularJS' way to disable an 'option' HTML5 element?
'AngularJS'禁用'option' HTML5元素的方法是什么?
我使用的是AngularJS v1.2.25.
恰好链接:https://plnkr.co/edit/fS1uKZ
<!-- CODE BEGIN -->
<!DOCTYPE html>
<html>
<head>
<script data-require="angular.js@2.0.0" data-semver="2.0.0" src="https://code.angularjs.org/2.0.0-beta.6/angular2.min.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
</body>
</html>
<!-- CODE END -->
我正在制作一个'form'元素,有几个'select'元素标签和几个'option'元素标签。
'option'元素标签与'select'元素标签具有相同的属性。
我想让用户对汽车制造商进行排名。当他们选择一个制造商时,我想在所有四个'select'元素标签中禁用'option'元素。
我发现了下面的问题/答案,但这是'AngularJS'的方式吗?(禁用选择选项)
他们正在使用jQuery,我知道AngularJS包含'jQuery Lite',但这是实现'AngularJS'的方式?
我在AngularJS网站上找到了这个文档:htt9美元://docs.angularjs.org/api/ng/directive/ngDisabled
这是随附的Plunk链接:htt9美元://plnkr.co/编辑/?p =
预览我很欣赏AngularJS团队提供的例子。我在考虑修改ng-model和/或ng-disabled。我想避免'黑客' AngularJS的'核心'文件。我解耦ng-model和/或ng-disabled吗?
或者,我应该制作一个自定义过滤器吗?我来自jQuery的背景,我试图坚持AngularJS的最佳实践尽可能多。我想防止过多的"技术债务"。
Angular禁用select选项的方法是使用ng-disabled="expression"
这个柱塞展示了它是如何完成的。
在这种情况下,你可以有4个选择,像这样:
<select ng-model="model.selected1">
<option ng-repeat="c in model.options" value="{{c.value}}" ng-disabled="model.should_disable(c, 1)">{{c.label}}</option>
</select>
<select ng-model="model.selected2">
<option ng-repeat="c in model.options" value="{{c.value}}" ng-disabled="model.should_disable(c, 2)">{{c.label}}</option>
</select>
<select ng-model="model.selected3">
<option ng-repeat="c in model.options" value="{{c.value}}" ng-disabled="model.should_disable(c, 3)">{{c.label}}</option>
</select>
<select ng-model="model.selected4">
<option ng-repeat="c in model.options" value="{{c.value}}" ng-disabled="model.should_disable(c, 4)">{{c.label}}</option>
</select>
模型。Options是你的选项列表
var model = $scope.model = {
options: [
{label: 'Volvo', value: 'volvo'},
{label: 'Audi', value: 'audi'},
{label: 'Saab', value: 'saab'},
{label: 'Opel', value: 'opel'},
],
should_disable: should_disable
}
函数should_disable(c, num)应该是true,当car c在一个<select>
中被选中,而不是num。
function should_disable(c, selectnum){
var other_selectnums = [1,2,3,4].filter(function(n){
return n != selectnum;
});
var is_selected_somewhere_else = false;
for(var i=0; i<other_selectnums.length; i++){
var otherselectnum = other_selectnums[i];
if(c.value == model['selected'+otherselectnum]){
is_selected_somewhere_else = true;
break;
}
}
return is_selected_somewhere_else;
}
这是一个完全工作的活塞
- 从所有元素中删除HTML5验证
- iPad没有加载所有HTML5元素
- 在IE8上使用jQuery克隆HTML5元素和事件
- HTML5在提交并显示所需标签后显示隐藏的表单元素
- 未能加载,因为找不到支持的源.当播放HTML5音频元素时
- <的自定义进度条;音频>并且<进度>HTML5元素
- 在keydown(JS,Jquery)上更改HTML5 Canvas元素
- 条形图元素的HTML5 JavaScript锚点
- HTML5-画布元素&自定义光标
- 无法为HTML5中具有画布和图像的可拖动元素设置“拖动图像”
- 注册后是否可以定义HTML5自定义元素中的生命周期回调
- HTML5上下文菜单-当菜单项被点击时,访问最初被点击的元素
- 将HTML5画布(视频)元素分割成若干块
- .play();不适用于HTML5媒体元素
- HTML5<视频>元素在Firefox、Opera和Safari中不起作用
- HTML5画布中的可拖动和可调整大小元素
- 如何使用HTML5的全屏API检查元素是否在全屏中
- 将类添加到画布元素HTML5和CreateJS
- 在画布元素 html5 中创建多个可拖动矩形
- 使用Javascript播放音频元素(html5)