javascript - 在 AngularJS 中使用带有选项选择的 ng-options

标签 javascript html angularjs

我正在使用 AngularJS,我想使用 ng-options 作为选择标签来显示按 optgroups 分组的选项。

这是我想在我的选择选项中使用的数组:

$scope.myList = [
    {
      "codeGroupCompetence": 1,
      "titre": "TECH. DE PRODUCTION / EXPLOITATION",
      "activated": true,
      "competences": [
        {
          "codeCompetence": 7,
          "titre": "Tech. exploitation",
          "activated": true
        },
        {
          "codeCompetence": 8,
          "titre": "Tech. postes de travail",
          "activated": true
        },
        {
          "codeCompetence": 9,
          "titre": "Tech. réseaux",
          "activated": true
        },
        {
          "codeCompetence": 10,
          "titre": "Tech. Help Desk",
          "activated": true
        },
        {
          "codeCompetence": 11,
          "titre": "Tech. Téléphonie",
          "activated": true
        },
        {
          "codeCompetence": 12,
          "titre": "Tech. Autre",
          "activated": true
        }
      ]
    },
    {
      "codeGroupCompetence": 2,
      "titre": "ETUDES, CONCEPTION, MODELISATION",
      "activated": true,
      "competences": [
        {
          "codeCompetence": 5,
          "titre": "Concepteur UML, Merise, ...",
          "activated": true
        },
        {
          "codeCompetence": 13,
          "titre": "Admin Windows",
          "activated": true
        },
        {
          "codeCompetence": 14,
          "titre": "Admin Unix",
          "activated": true
        },
        {
          "codeCompetence": 15,
          "titre": "Admin Linux",
          "activated": true
        },
        {
          "codeCompetence": 16,
          "titre": "Administrateur AS400",
          "activated": true
        },
        {
          "codeCompetence": 17,
          "titre": "Administrateur Mainframe IBM",
          "activated": true
        },
        {
          "codeCompetence": 18,
          "titre": "Administrateur Autres Systèmes",
          "activated": true
        }
      ]
    },
    {
      "codeGroupCompetence": 3,
      "titre": "ADMIN SYSTEMES",
      "activated": true,
      "competences": [
        {
          "codeCompetence": 6,
          "titre": "Urbaniste SI",
          "activated": true
        }
      ]
    }
  ];

为了使用 ng-options 中的 group by 功能显示此列表,我创建了一个新数组,如下所示:

  $scope.competences = [];

    myList.forEach(function(group){
          group.competences.forEach(function(competence){
            $scope.competences.push({
              id : competence.codeCompetence,
              titre : competence.titre,
              group : group.titre
            })
          });
        });

这就是我显示选择选项的方式:

<select ng-model="tipost" 
        ng-options="competence.id as competence.titre group by competence.group for competence in competences track by competence.id">
     </select>

不幸的是,由于某种原因这不起作用,我无法弄清楚它是什么。

请问,我该如何解决这个问题?

另一个问题:是否有任何其他方法可以仅将第一个数组与 group by 一起使用?

提前致谢。

这是我的示例的 jsfiddle :

http://jsfiddle.net/rtCP3/615/

最佳答案

我 fork 了你的 fiddle here :

我注意到的几件事: 我在您的重复中删除了 track by 子句,并向您的 Controller 添加了一个范围可变的 $scope.tipost。

<select ng-model="tipost" 
        ng-options="competence.id as competence.titre group by competence.group for competence in competences">
     </select>

Controller 编辑: 您忘记了 myList 变量上的 $scope,现在您可以使用 $scope.tipost 分配预选选项并检索所选选项。

$scope.tipost = 5;

$scope.myList.forEach(function(group){
          group.competences.forEach(function(competence){
            $scope.competences.push({
              id : competence.codeCompetence,
              titre : competence.titre,
              group : group.titre
            })
          });
        });

在这种情况下,控制台会告诉您出了什么问题。

关于javascript - 在 AngularJS 中使用带有选项选择的 ng-options,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38507874/

相关文章:

jquery - html5 视频的当前/持续时间?

javascript - 我怎样才能让幻灯片停止播放?我可以通过哪些方式改进代码?

javascript - 将星号附加到包含类为 .mandatory 的标签的 div 的兄弟项

javascript - 如何在javascript中查找对象的indexof

javascript - 为什么 promise in factory 自 AngularJs 1.2.0 之后就不起作用了?

javascript - 为什么我的背景图片这么大而且拉长了?

javascript - 常量不适用于 Actions 中的 Jest 测试

javascript - jstree 不适用于 IE9

angularjs - $cookieStore 过期未设置

javascript - 使用 jquery 隐藏 div 但无法计算出针对正确 div 的逻辑