当前位置: 首页 > 面试题库 >

禁用了Angular中针对同一项目的其他Select Option字段选择的项目

漆雕稳
2023-03-14
问题内容

我已经为此苦苦挣扎了一段时间……我目前正在使用Angular。

假设我们有五个选择选项字段,并且我们正在为每个列表遍历相同的列表。

我们的选择是:

$scope.items = [one, two, three, four, five];

如果我选择一个,我将如何为其余选择选项字段禁用选择的选项?而且,如果我转到另一个选择选项字段并选择一个可用的项目,则它将对所有其他字段禁用该项目。

任何帮助甚至指导如何做到这一点,将不胜感激。谢谢


问题答案:

您可能需要两种可能的解决方案,这取决于禁用规范所需的方式。

  1. 通过删除已从其他 select 元素中选择的项目来禁用。此解决方案需要一个过滤器,该过滤器将除去当前 select 标签已选择的当前项目以外的所有已选择项目。

演示

Java脚本

  .controller('Ctrl', function($scope) {

    $scope.items = [1,2,3,4,5];
    $scope.data = [];

  })

  .filter('arrayDiff', function() {
    return function(array, diff) {
      var i, item, 
          newArray = [],
          exception = Array.prototype.slice.call(arguments, 2);

      for(i = 0; i < array.length; i++) {
        item = array[i];
        if(diff.indexOf(item) < 0 || exception.indexOf(item) >= 0) {
          newArray.push(item);
        }
      }

      return newArray;

    };
  });

HTML

<select 
  ng-repeat="(modelIndex, itemValue) in items track by modelIndex"
  ng-model="data[modelIndex]"
  ng-options="item for item in $parent.items | arrayDiff:data:data[modelIndex]">
  <option value="">Select Number</option>
</select>
  1. 通过 disabled 为选项项设置属性来禁用它,这实际上是解决问题的复杂方法,因为它不使用标准角度语法。通过使用迭代项目并添加一个表达式,该表达式针对其他元素中的其他选定项目评估当前选定的项目。 select ng-option``ng-repeat``ng-disabled select

演示

Java脚本

  .controller('Ctrl', function($scope) {

    this.items = ['1', '2', '3', '4', '5'];
    this.data = [];

  })

  .filter('hasIntersection', function() {
    return function(item, array) {
      return array.indexOf(item) >= 0;
    };
  });

HTML

<select
  ng-repeat="(selectIndex, itemValue) in Demo.items"
  ng-model="Demo.data[selectIndex]">

  <option value="" ng-selected="Demo.data[selectedIndex] == item">
    Select Number  
  </option>

  <option ng-repeat="item in Demo.items"
          value="{{item}}"
          ng-disabled="item | hasIntersection:Demo.data"
          ng-selected="Demo.data[selectIndex] == item">
    {{item}}
  </option>

</select>


 类似资料:
  • 问题内容: 我正在使用实质性的UI Select组件,并且试图在内部构建过滤器以仅显示与用户输入的内容匹配的项目。 我为正在开发的内容构建了一个最小的示例。 现在我的问题是,默认情况下,选择组件允许用户按下任何字母,并且如果存在第一个字母与用户输入匹配的选项,它将选择该选项。 所以,如果我有3个选项(,和)和用户类型选择部件将选择选项,我的文本字段不会改变的价值。但是,如果用户键入,则文本字段将更

  • 我希望,如果我选择“mammals”,动物选择选项只显示值为1的选项data-animal_class。 我知道如何获得哺乳动物值,但我不知道如何使用过滤器 这是我的代码:

  • 我有困难在提交时在烧瓶应用程序的WTForm页面中获取当前选择的项目。提交时,form.tableselector.data值始终等于1,无论选择了SseltField中的哪个项目(并且所有选项都具有表单(1,'table_name')1-10中的唯一表id,其中1是整数。 以下是当前代码: 意见。派克 form.py 桌面视图。html 我注意到,在调试表单时,wtf元对象csrf属性等于Tru

  • 问题内容: 如何对包含可选NSdate的可选数组进行排序? 如何根据dateCompleted对数组排序? 问题答案: 您的排序功能可以结合使用可选链接和nil合并运算符: 这将对值上的项目进行排序,所有和和一起的项目都被视为“在遥远的过去”,以便在所有其他项目之前对其进行排序。 Swift 3的 更新(假设是):

  • 进程优先权 当计划线程时使用的优先权。在有需要时可调整优先权到较高或较低。 文件位置 你可以为不同的文件类型改变文件夹。在默认情况下,大部分的文件设置在设置位置。然而, 一些文件是保存在 profiles目录和全部日志文件保存在 logs 目录。 文件关联(只限于完整版本) 文件关联是 Navicat 使用什么来打开 Navicat 已保存的文件。例如:.npt 文件(数据传输设置文件)将会使用数

  • 问题内容: 我需要具有2个字段的django modelform,其中第二个字段选择列表取决于在第一个字段中选择的内容。我的模特: 如果vehicle_type设置为 personal, 如何将 make 字段的选择设置为 PERSONAL_MAKES ?我怎样才能做到这一点?在模型级别上可以吗? __ 问题答案: 您可能不能,因为这取决于用户与表单的交互:您的服务器无法预先知道用户将表单发送到浏