在带有ng-options的选择框中预先选择的默认值

时间:2018-06-01 13:51:29

标签: sql angularjs sql-server ng-options angularjs-ng-options

我正在尝试使用ng-options在我的选择框中选择默认值(来自数据库)。

我的观点

<select class="form-control samlength modalinput" 
        ng-options="p.procid as p.procname for p in processes track by p.procid" 
        ng-model="p.procid">
  <option value="">-- choose an option --</option>
</select>

其中p.procid是从数据库接收的值。

我的数据

procid  procname    time
    1   MyProcess   2018-05-30 13:34:54.097 3003162
    3   Testing     2018-05-31 18:31:32.467 3003162

如果选择procid为3,默认情况下如何选择它?

仅供参考 - 我尝试过在其他主题中给出的多个答案。我也试过ng-init,但没有任何帮助。

2 个答案:

答案 0 :(得分:2)

您可以将HTML保留为:

<select class="form-control samlength modalinput" 
        ng-options="p.procid as p.procname for p in processes track by p.procid" 
        ng-model="selectedProcess">
  <option value="">-- choose an option --</option>
</select>

现在,如果我们需要选择数组中的特定对象。我们可以通过迭代数组并比较给定键的值来实现:

function functiontofindIndexByKeyValue(arraytosearch, key, valuetosearch) {
    for (var i = 0; i < arraytosearch.length; i++) {
      if (arraytosearch[i][key] == valuetosearch) {
        return i;
      }
    }
    return null;
  }

将此功能称为:

var index = functiontofindIndexByKeyValue($scope.processes, "procid", procid);
$scope.selectedProcess = $scope.processes[index];
alert(index);

希望它有效!

答案 1 :(得分:0)

将您的html代码更新为:

<select ng-model="processSelected" 
     ng-options="p.procname for p in processes track by p.procid">
</select>

然后在控制器中将模型值初始化为:

$scope.processSelected = $scope.processes[1];

其中$scope.processes是一个过程对象数组。

Plunker Example