【问题标题】:Angular: Getting error while using ng-optionAngular:使用 ng-option 时出错
【发布时间】:2014-06-27 18:24:08
【问题描述】:

我有这个架构:

teams: [
   {
      id: 1,
      name: "Spain"
   },
   {
      id: 2,
      name: "Germany"
   }
]

现在我有了这个选择元素:

<select ng-model="betSchema.winnerId" ng-options="team.name for team in teams track by team.id">
    <option value="-1">Tie</option>
</select>

betSchema 对象如下所示(默认):

{
   winnerId: -1
}

这是我看到的结果:

问题是:
1.我看不到领带选项,并且有一个神秘的“空白”选项(顶部的第一个)。 2.当betSchema看起来像这样:

{
   winnerId: 2
}

我希望看到德国选项被选中。

我做错了什么?

【问题讨论】:

    标签: javascript html angularjs data-binding ng-options


    【解决方案1】:

    看到这个小提琴:http://jsfiddle.net/Mn4SH/4/

    有几件事。

    1. 当使用 ng-options Angular 会覆盖你的选项标签,所以你必须像这样将它添加到你的模型中:

      scope.teams = [{ id: -1, name: "Tie" }, { id: 1, name: "Spain" }, { id: 2, name: "Germany", }];

    2. 其次,您可以使用 track by,但在这种情况下使用“as”也可以:https://docs.angularjs.org/api/ng/directive/select。您可以将 obj.dataToBeStoredInModel 用作 objList 中 obj 的 obj.labelOfData 来获取 ng-options 的 id。

    【讨论】:

    • 我已经将“tie team”推到了 teams 数组中,如下所示:$scope.teams.unshift( {id: -1,name: "Tie"}); 并将选择更改为:&lt;select ng-model="bettype.betSchema.winnerId" ng-options="team.id as team.name for team in teams"&gt;&lt;/select&gt;。我仍然得到一个空白选项,无法选择任何选项而不是空白选项。
    • 你有它的小提琴吗?如果没有加载任何内容,听起来好像存在 Javascript 错误。
    • 不,没有小提琴,但我可以指出 betSchema.winnerId 是从服务器加载的(通过服务),所以当我硬编码设置它时 - 它工作正常。但是当它被加载时,一切都搞砸了。有任何想法吗?感谢您的帮助\!
    • 当然。如果使用 Google Chrome,请检查网络选项卡以查看加载 betSchema.winnerId 的请求的位置。单击请求并查看结果。听起来网络请求正在返回 Angular 不喜欢的东西(即未定义)。
    • 是的,数据库中的数据有问题。非常感谢!很乐意接受你的回答:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2018-10-02
    • 2014-10-12
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    相关资源
    最近更新 更多