【问题标题】:angularjs - remove option from input selectangularjs - 从输入选择中删除选项
【发布时间】:2014-07-15 22:37:37
【问题描述】:

我这辈子都想不通。使用 AngularJS。

我有一个包含多个选项的下拉选择字段。它是可以多次填写的表格的一部分(即“添加另一个”类型的表格)。现在,其中一个选项只能使用一次。使用后如何从所有其他选择字段中删除此选项?

我在做什么:

html

<select ng-model="item.itemtype">
    <option ng-repeat="i in itemtype" value="{{i}}" ng-init="item.itemtype = itemtype[0]">{{i}}</option>
</select>


angularjs

  $scope.Items = [
    { 'itemtype': '', 'desc': '', 'color': '' }
  ];

  $scope.itemtype = [
    'shirt',
    'pants',
    'hats',
    'shoes',
    'special'];


我尝试过的(但真的没用)

  $scope.specialremove = function() {
    var exist = Items.indexOf("special")
    if (exist !== 0) {
      return '';
    }
    else {
      return 'special';
    }
  }

我希望我不必求助于任何其他框架来解决这个问题。随时指出我的代码中的任何其他问题/错误/效率低下。

【问题讨论】:

    标签: javascript arrays forms angularjs option


    【解决方案1】:

    首先可以使用ng-options

    ng-options="type for type in itemType"

    最好有具有labelvalue 属性的对象,以便将其写为

    ng-options="type.value as type.label for type in itemType"

    并将显示的标签与选择的实际值分开。

    在你的控制器中你应该有类似的东西:

      $scope.itemType= [
          ...
      ];
      $scope.selectedItem= $scope.itemType[0]; 
    

    这样你就可以把选择写成:

    &lt;select ng-Model="selectedItem" ng-options="item.value as item.label for item in itemType"&gt;&lt;/select&gt;

    要删除所选项目,您可以在控制器中 watch selectedItem 的值:当它与您想要的值匹配时,将其从数组中删除并相应地更新 selectedItem

    这是一个基本的fiddle。我只是在选择第三个选项后删除它,并将所选项目重置为第一个。

    【讨论】:

    • 不完全在那里。我开始使用 ng-options,但在关注另一个 S/O rabbithole 后更改为 current。 - 所以,这对于选择字段本身来说效果很好,但是我无法显示占位符选项(使用 ng-init 解决的 orig),也无法复制 $watch pop
    • 在你的方法中使用itemType.pop()怎么样?
    • 我会试试的。 Angular 对我来说很新,不是 100% 具有底层逻辑 - 但我会试一试,看看会发生什么
    • 这个想法是你只操纵底层模型。在这种情况下,您的模型是 itemTypes 的数组,因此如果您想删除一个,您应该简单地操作它。无论如何,如果您决定采用经典的 ngOptions 方法,我会更新小提琴以纠正一个阻止初始选择的小错误。
    • 嗯,让我看看这个更正是否对我有用。用我原来的方法尝试 .pop() 没有用。想知道...应该是 .pop 还是 .splice?
    猜你喜欢
    • 2014-07-24
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2018-08-21
    • 2017-06-13
    相关资源
    最近更新 更多