【问题标题】:ng-options selected data return objectng-options 选择的数据返回对象
【发布时间】:2016-08-19 18:05:16
【问题描述】:

我有一个对象数组 { id:x, name: 's' } 并使用 ng-options 创建带有默认选定数据的下拉列表。到目前为止一切正常。

现在,当我选择其中一个选项并查看所选数据时,它会返回完整的对象,但我只需要名称字段以及必须在加载时选择默认值。

// in controller
 vm.teams = [
      {
        id: 1,
        name:'First'
      },
       {
        id: 2,
        name:'Second'
      },
       {
        id: 3,
        name:'Third'
      }
    ];

    vm.teamFormData = {
        team: ''
    };

    vm.getTeam = function(formData) {
      $log.debug(formData); << here I get object
    }

// in View
<select ng-init="vm.teamFormData.team = vm.teams[0]"  
        ng-model="vm.teamFormData.team" 
        ng-options="t.name for t in vm.teams track by t.id" >
</select>

这是我的working plunker

【问题讨论】:

    标签: angularjs ng-options


    【解决方案1】:

    您的 ngOptions 语法略有偏差 - 它是 value as text for item in array

    ng-options="t.name as t.name for t in vm.teams track by t.id"
    

    然后你的ngInit就变成了

    ng-init="vm.teamFormData.team = vm.teams[0].name"
    

    旁注-您可能不想要ngInit-在上面的示例中没有真正的用例。相反,只需在控制器中设置属性。

    见 plunkr:https://plnkr.co/edit/7SGIdtfjucMnMqiEa7JY?p=preview

    【讨论】:

    • 这样做,我丢失了默认选择值。加载时未选择任何内容
    • 你已经在控制器的formData bac中添加了默认数据,我们不能通过ngInit来做吗?
    • @pro.mean -- 你可以 -- 但 ngInit 不应该这样使用。为什么你想要它而不是控制器?
    • 只是问问。好的,我会用控制器来做。善良;y 用工作的 plunker 更新你的答案。这样我就接受了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多