【问题标题】:array in object in ng-optionsng-options 中对象中的数组
【发布时间】:2015-06-10 18:00:06
【问题描述】:

我在将对象内部的数组放入 ng-options 时遇到问题。

我在另一个数组中有以下对象数组:

$scope.array = [{name: "jan", ar=["car", "bus", "bike"]}, {name: "tom", ar=["milk", "water", "bike", "walking"]}, {name: "kim", ar=["star", "car"]}]

我想选择 jan、tom 和 kim 选项。但这不是问题:

<select ng-options="o.name for o in array" ng-model="choosen.nOption">

但是,当他们选择一个选项时,一个新的选择应该以该名称的数组 ar 作为选项开始:

<select ng-if="choosen.nOption!=undefined" ng-options="o.ar for o in array.ar | filter: {name: choosen.nOption}">

谁能帮助我如何获取内部数组的值?

你可以在https://jsfiddle.net/brokenhip/phxyap8a/找到一个提琴手

解决方案: https://jsfiddle.net/brokenhip/phxyap8a/2/

<select ng-options="o.name for o in arrayA" ng-model="choosen.nOption"></select>

         <select  ng-if="choosen.nOption!=undefined" ng-options="o for o in choosen.nOption.ar" ng-model="choosen.nOption2"> </select>

【问题讨论】:

  • 我尝试将数组 ar 从数组中取出,因为过滤器应该指向正确的对象。我知道这是不对的,但这是我能做的最好的。实际上,我应该将 ar 从数组中的对象中取出,其中选择了对象中的名称。
  • 试试ng-options="o.ar for o in array | filter: {name: choosen.nOption}
  • 很遗憾这不起作用。我想这试图将完整的数组 ar 放在一个选项中,还是我错了?

标签: angularjs angularjs-ng-repeat ng-options angularjs-ng-options


【解决方案1】:

所以我发现一个简单的方法是使用 $watch 来查看第一个选择何时更改。

在你的控制器中添加这个:

    $scope.$watch('choosen.nOption',function(newVal){
          $scope.choosenOption = newVal['ar'];
          console.log($scope.choosenOption); // check in your console
      });  

在您的 HTML 中,您不需要过滤器:

  <select  ng-if="choosen.nOption!=undefined" ng-options="opt for opt in choosenOption" ng-model="choosen.nOption2"> </select>

【讨论】:

  • 谢谢,虽然我总是尝试只在没有其他可能的情况下使用手表。
  • 我只是想出了如何在没有手表的情况下做到这一点。不知道为什么我没有早点看到。 jsfiddle.net/brokenhip/phxyap8a/2
  • 你说得对!对我来说,这是最简单的方法。如此简单... :)
  • 实际上我想我曾经这样尝试过,但在我的应用程序中我还需要一个 ng-change 否则我无法让它工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 2017-11-21
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
相关资源
最近更新 更多