【问题标题】:Angularjs default value for bound select [duplicate]绑定选择的Angularjs默认值[重复]
【发布时间】:2013-01-31 11:54:57
【问题描述】:

可能重复:
How to make a preselection for a select list generated by AngularJS?

在 Angular 教程中,他们设置了一个 sortOrder 范围变量,默认排序方式为“最新”。

在我的fiddle 中,我正在做类似的事情,但我的选择值没有被选中。相反,我得到了空白条目,就好像我没有在范围内设置任何值一样。但是我可以看到我的排序顺序,并且我正在发出选择的值并且它是预设的。

    //set a default this way also, but not updating the dropdown
$scope.ddlFilter = {
    name: "All Open Events",//doesn't matter what this is, only cares about value
    value: "ALL"//"OPEN"
};

我知道我可以使用 ng-init 来设置默认值,但我也希望能够这样做。 有什么建议吗?

【问题讨论】:

  • 查看上面的链接——你的答案是$scope.ddlFilter = $scope.eventFilters[2];——ng-model 必须引用 ng-options 中使用的相同数组中的元素。

标签: combobox angularjs


【解决方案1】:

尝试使用对象而不是对象数组。它将允许您通过字符串与数组位置(例如scope.eventFilters[0])来引用您想要的内容。

$scope.eventFilters = {
    "OPEN": "All Open Events",
    "UNMAPPED": "All Un-Mapped Events",
    "MAPPED": "All Mapped Events",
    "CLOSED": "All Closed Events (past 8 hours)",
    "ALL": "All Events",
    "OTHER": "Other OpCenter Open Events"
};

然后将默认值定义为字符串(上面对象的键):

$scope.ddlFilter = "MAPPED";

然后在页面上将您的选择更改为

<select ng-model="ddlFilter" ng-options="k as v for (k, v) in eventFilters"></select>

你的过滤器不再需要.value,所以它会变成:

<tr ng:repeat="event in events  | myEventFilter:ddlFilter | orderBy:sort.column:sort.descending">

在此处查看您修改后的代码:http://jsfiddle.net/WXLte/2/

【讨论】:

  • 非常好。非常感谢。
  • 不幸的是,我遇到了一个小问题。我要填充的下拉列表不仅包含我在此处列出的那些值(您帮助我进入了一个对象而不是数组),而且还有一组动态的选项我需要在这个集合上进行加载下拉菜单。这些额外的值来自 $http 调用,它们以名称/值对的形式出现。我怎样才能将这些新值与现有的集合融合在一起?
  • 提出一个更具体针对这一新问题的新问题 - 此问题已关闭。如果您提出新问题,有很多人可以帮助您(如果您愿意,可以链接回此问题)
  • 而且,我认为您正在寻找的是docs.angularjs.org/api/angular.extend(它将使用新属性扩展当前对象)。它的工作原理很像 jQuerys 版本。
猜你喜欢
  • 1970-01-01
  • 2015-10-08
  • 1970-01-01
  • 2014-07-26
  • 2016-03-19
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 2016-12-11
相关资源
最近更新 更多