【问题标题】:How to select an ng-option through ng-model如何通过 ng-model 选择一个 ng-option
【发布时间】:2017-03-20 14:59:45
【问题描述】:

我有一个使用 ng-repeat 填充的表。例如,假设我正在创建一个 evite 类型的模拟站点,并且该表显示了所有已响应的人。 Each row has a radio button which, when selected, will populate additional information in a div below the table.此 div 也用作回复和更新现有回复的模板。当我从上表中选择一行时,将填充此 div 中的字段。其中一个字段是使用 ng-options 填充的选择下拉框。这些选项显示“YES”、“NO”和“MAYBE”,但是当将响应发送回服务时,它分别需要一个代码号“1”、“2”或“3”。我的 ng-options 如下所示:

ng-options="decision.decisionCode as decision.decisionDescription for decision in vm.decisionList"

我的问题是,当我从表中选择一行时,我无法显示该选项。我尝试将 select 的 ng-model 设置为 decisionCode、decisionDescription 和对象,但下拉列表仍然为空白。如何为 select 分配 ng-model 以显示表格中的选定值?

<div class="col-md-2 ">
    <select class="form-control" id="decision" ng-model="vm.decisionSelected" ng-options="decision.decisionCode as decision.decisionDescription for decision in vm.decisionList"></select>
</div>

vm.decisionList:

[{
"decisionCode": "1",
"decisionDescription": "YES"
}, {
"decisionCode": "2",
"decisionDescription": "NO"
}, {
"decisionCode": "3",
"decisionDescription": "MAYBE"
}]

【问题讨论】:

  • 请包含整个select html(带有ng-model)并向我们展示您的vm.decisionList 的样子
  • 已更新所需信息
  • 你的vm.decisionSelected是什么样的?
  • @devqon vm.decisionSelected 是所选decisionDescription 的decisionCode(即:如果从下拉列表中选择YES,则vm.decisionSelected 为1
  • 1 还是"1"?类型必须与ng-options相同(数字与字符串)

标签: angularjs angularjs-ng-repeat ng-options


【解决方案1】:

我试过你的代码,它对我来说很好用。您应该研究的一件事是如何设置控制器。我假设您正在使用 Controller As 语法考虑到您的 sn-p,因此您的控制器必须至少看起来像这样:

angular.module('app')
    .controller('myController', myController);

function myController() {
    var vm = this;             // This is necessary for Controller As syntax to work
    vm.decisionSelected = "1"; // Assuming you want a default value
    vm.decisionList = [
        {
            "decisionCode": "1",
            "decisionDescription": "YES"
        }, 
        {
            "decisionCode": "2",
            "decisionDescription": "NO"
        }, 
        {
            "decisionCode": "3",
            "decisionDescription": "MAYBE"
        }];
}

如果您将 vm.decisionList 设置为 $scope 变量而不是这个,则它是 $scope.decisionList,Controller As 语法将无法识别它,因此您需要删除“vm”。在你的 ng 选项中

【讨论】:

  • 这与我的控制器的外观非常相似。当我使用表达式查看模型时,我看到了正确的值。问题是,该值没有与下拉列表中的正确响应相关联。因此,例如,如果我从表中选择响应为“YES”的行,那么模型应该被分配为“1”。但是,包含 ng-options 的下拉列表未填充正确的响应。
猜你喜欢
  • 1970-01-01
  • 2017-11-11
  • 1970-01-01
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-23
  • 2018-08-29
相关资源
最近更新 更多