使用ng-value或ng-model

时间:2017-05-25 16:31:31

标签: javascript html angularjs

目前我正面临这个问题

我有这个数组,这个选择html

$ctrl.languages =
        [
            {
                key: 'Play Prompt',
                value: 'blank'
            },
            {
                key: 'Dont Play Prompt - Assume English',
                value: 'English'
            },
            {
                key: 'Dont Play Prompt - Assume Spanish',
                value: 'Spanish'
            }
        ];

 <select class="form-control" name="vdn" ng-model="$ctrl.ivr.Language"
                                                        ng-options="item.value as item.key for item in $ctrl.languages" ng-required="true">

                                                </select>

我使用该下拉列表显示每个选项的当前下拉列表中的键,并保存&#34;值&#34;在数据库中选择的选项的属性,但是当我使用&#34;值&#34;检索数据的选项时未选择ssaved。

在这种情况下,如果我保存空白&#39;数据库中的值我希望下拉菜单中有“播放提示”字样。选择了密钥。

由于

2 个答案:

答案 0 :(得分:0)

您设置item.value作为从下拉列表中选择选项时设置为$ctrl.ivr.Language的值。由于<select>的{​​{1}}指令指向ngModel,因此在控制器中将值设置为$ctrl.ivr.Language会自动将$ctrl.ivr.Language添加到下拉列表中的项目具有匹配值的selected="selectd"属性。

因此,如果您希望“播放提示”为数据库中不包含该设置值的下拉列表中选择的值,则可以检查API响应中是否存在该值,如果它没有,然后将value设置为默认为“播放提示”选项。

答案 1 :(得分:0)

这看起来非常简单。 我在这里提供了一名工作人员:https://plnkr.co/edit/sCusyXaSJdO0sjgm3csE?p=preview

如果您正在寻找其他内容,请告诉我。

在我的代码中,我添加了一个模拟Web服务调用的超时。 这是来自plunker的控制器代码:

app.controller('mainController', function($scope, $timeout) {
  $scope.languages = [
      {
          key: 'Play Prompt',
          value: 'blank'
      },
      {
          key: 'Dont Play Prompt - Assume English',
          value: 'English'
      },
      {
          key: 'Dont Play Prompt - Assume Spanish',
          value: 'Spanish'
      }
    ];

    $scope.ivr = {};

    // Simulating Web service Call
    $scope.retrievingData = true;
    $timeout(function() {
      $scope.ivr.Language = 'blank';
      $scope.retrievingData = false;
    }, 2000);
});
相关问题