【问题标题】:Select default value at ng-options在 ng-options 中选择默认值
【发布时间】:2014-08-09 19:35:36
【问题描述】:

我有这个代码和信息:

$scope.options = [
  { id: 1, label: "My label" },
  { id: 2, label: "My label 2" }
];
$scope.selected = 2;

<select ng-options="opt.label for opt in options" ng-model="selected">
  <option value="">Select one</option>
</select>

但是,选项是这样创建的:

<select ng-options="opt.label for opt in options" ng-model="selected">
  <option value="">Select one</option>
  <option value="0">My label</option>
  <option value="1">My label 2</option>
</select>

如何将所选选项设置为我的标签 2?我知道可以做到:

$scope.selected = $scope.options[1];

但我的问题是该选项是在指令中创建的,当时我不知道 1)有多少值有 $scope.options,也不知道 2)数据库中所选选项的索引是什么。我唯一知道的是 id (在对象中)。

我的指令的 html 是这样的:

<select ng-switch-when="select" ng-model="form.model[element.model]" ng-options="{{element.rule}}"></select>

element.rule 在哪里:

rule: "role.role for role in element.options"

element.options 包含带有选项的数组,form.model[element.model] 包含所选选项的 id。

如何获取数组$scope.options中ID为X的元素的索引?我很确定这会给我解决方案,但我不知道该怎么做......

【问题讨论】:

    标签: javascript angularjs ng-options angular-ngmodel


    【解决方案1】:

    只需在启动控制器时设置正确的模型值即可。如果您知道 ID,则可以使用 filter 轻松获取正确的数组值:

    $scope.selected = $filter('filter')($scope.options, {id: 2})[0];
    

    【讨论】:

    • A+ 表示过滤器的想法。我只是从 angular 开始,还没有使用太多,所以我什至没有想到。
    【解决方案2】:

    在我看来,您的代码存在的问题是来自数据库的“选定”值是选定对象的 ID,而不是对象本身。这很好,但由于这种差异,你不能简单地设置

    $scope.selected = 2 //assuming 2 is the value coming from your database
    

    因为您的选项数组中不存在值“2”。 ID 为 2 的 Object 可以。

    如果您始终可以保证选项数组中的选项是从 1 到 n 的顺序,您可以通过简单地使用它来完成此操作:

    $scope.options = [
        { id: 1, label: "My label" },
        { id: 2, label: "My label 2" }
    ];
    var selectedIdFromDatabase = 2;
    $scope.selected = $scope.options[selectedIdFromDatabase-1];
    

    如果你不能保证(即使你现在可以,在你的代码中做这个假设可能不是一个好主意)你需要遍历你必须识别的对象数组对象,ID 为您数据库中的 selectedId。

    this question 的答案对您需要执行的数据处理类型进行了很好的描述,并提供了有关一般 javascript 对象的更多信息。

    【讨论】:

      猜你喜欢
      • 2014-07-04
      • 2016-08-01
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 2015-01-07
      相关资源
      最近更新 更多