angularjs - 如何正确使用 ng repeat Angular ?

标签 angularjs

我有一个旧的 Angular 形式的代码,其中包含以下几行:

      <label for="language">{{'LANGUAGE_LABEL' | translate}}</label>
      <select id="language" name="language" ng-model="paramsGEN.lan.paramUserValue">
      <option value="en">{{'referencedata.languages.EN' | translate}}</option>
      <option value="nl">{{'referencedata.languages.NL' | translate}}</option>
      </select>

我想通过使用 ng repeat 来优化它(我读过 ng 选项更好,但我以前从未使用过......)

因此,在我的 Controller 中,我添加了一个新变量:
$scope.languages = [{
      name: "referencedata.languages.EN",
      value: "en"
    }, {
      name: "referencedata.languages.NL",
      value: "nl"
    }]

这是我使用 ng repeat 的代码:
<select id="language" name="language" ng-model="paramsGEN.lan.paramUserValue">
<option ng-repeat="language in languages track by value" value="{{language.value}}">
{{language.name | translate}}
</option>

但它根本不起作用,我收到“错误:[ngRepeat:dupes]”。

你能告诉我如何在这里使用 ng repeat 吗?或 ng 选项,如果可以的话,如果它更优化了 ng 重复。
谢谢你!!

最佳答案

您通过 value 跟踪但它没有定义。应该是 language.value .

<option ng-repeat="language in languages track by language.value" value="{{language.value}}">

您可以在下面找到 ng-options 版本:
<select id="language" name="language" ng-model="paramsGEN.lan.paramUserValue"
        ng-options="language.name for language in languages track by language.value">
</select>

以及包含两个示例的工作片段:

function Main($scope) {
  $scope.languages = [{
      name: "referencedata.languages.EN",
      value: "en"
    }, {
      name: "referencedata.languages.NL",
      value: "nl"
    }];
}

angular.module('test', []);
angular.module('test')
  .controller('Main', Main);
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.js"></script>
<div ng-app="test">
  <div ng-controller="Main">
    <label for="language">{{'LANGUAGE_LABEL'}}</label>
    <select id="language" name="language" ng-model="paramsGEN.lan.paramUserValue">
      <option ng-repeat="language in languages track by language.value" value="{{language.value}}">
        {{language.name}}
      </option>
    </select>
    <hr>
    <select id="language" name="language" ng-model="paramsGEN.lan.paramUserValue"
            ng-options="language.name for language in languages track by language.value">
    </select>
  </div>
</div>

关于angularjs - 如何正确使用 ng repeat Angular ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40612154/

相关文章:

css - ng-enter-stagger 动画不适用于 safari

javascript - 通过 Angular 在 firebase 中使用自定义标题而不是 ID 创建新项目

javascript - 使用 jquery 在 AngularJS 中仅选择一个子元素

angularjs - 如何使用 AngularJs 在两个文本框上实现双向绑定(bind)?

javascript - 通过 Istanbul 尔提高分支机构覆盖率

angularjs - IE 11 - 图像在破坏 View 后保留在浏览器内存中

javascript - 如何以 Angular 将 JSON 转换为 HTML

javascript - 带 translude 的 Angular 不同按钮 View

php - 如何将数据从 angular js 发布到 zend Controller ?

javascript - ngModel 的 angularjs 范围未按预期工作