【问题标题】:ngOptions with Objects won't populate带有对象的 ngOptions 不会填充
【发布时间】:2014-01-30 03:30:20
【问题描述】:

我有一个选择下拉列表,我想在对象中填充用户名:

        <select id="entityDropDown" 
            ng-model="selectedUser" 
            ng-options="user as user.name for user in users" 
            ng-change="getUserInfo(selectedUser)">
        </select>

我的对象的结构如下:

users:  { 
    1:  { 
        name: Demo Administrator,
        id: 1,
        domain: null,
        email: null,
        isAdmin: False,
     },
    4:  { 
        name: ITUN\WSS,
        id: 4,
        domain: i:0#.f|admembers|,
        email: ,
        isAdmin: False,
    } 
}

【问题讨论】:

    标签: angularjs ng-options


    【解决方案1】:

    尝试使用对象的理解表达式:

    ng-options="user as user.name for (key,user) in users"
    

    【讨论】:

    • 谢谢,效果很好。我一直在阅读有关 ngOptions 的文档,但如果您不使用数组,它们的示例就不是很好。
    【解决方案2】:

    在您的情况下,users 不是数组。

    所以不是

    users:  { 
      1: { 
         name: Demo Administrator
         id: 1
         domain: ITUN\demoadmin_compulite
         email: simkessy@gmail.com
         isAdmin: False
         } 
    }
    

    你想要这样的东西

    users:  [ 
       { 
         name: Demo Administrator
         id: 1
         domain: ITUN\demoadmin_compulite
         email: simkessy@gmail.com
         isAdmin: False
         } ,
         { 
         name: Demo Administrator
         id: 2
         domain: ITUN\demoadmin_compulite
         email: simkessy@gmail.com
         isAdmin: False
         } 
    ]
    

    【讨论】:

    • 无论如何都可以对对象使用 ngOptions。我使用对象做了很多比较和检索。如果我把它改成一个数组,事情就有点复杂了。
    • 如果没有一些自定义代码,您将无法迭代单个复杂对象。
    • @Batman 如果有多个用户,您的对象看起来如何?
    • 我已更新 OP 以添加另一个对象。如果我需要自定义代码,我可能会恢复到用户对象数组。我想尽可能地贴近 Angular。
    • @Batman 它看起来不像一个有效的 JSON。每个字段后都应该有逗号。名称、id 等后面没有逗号...字符串也应该在引号下。
    猜你喜欢
    • 1970-01-01
    • 2022-10-06
    • 2012-10-31
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多