Angularjs绑定选择的默认值

VBA*_*ole 2 combobox angularjs

可能重复:
如何对AngularJS生成的选择列表进行预选?

在角度教程中,他们设置了一个sortOrder范围变量,默认排序选择为"最新".

在我的小提琴我做的相似但我的选择值没有被选中.相反,我得到空白条目,好像我没有在范围中设置任何值.然而,我可以看到我的排序顺序,我发出了选择的值,它是预设的.

    //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"
};
Run Code Online (Sandbox Code Playgroud)

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

Jay*_*com 6

尝试使用对象而不是对象数组.它允许您通过字符串和数组位置引用您想要的内容,例如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"
};
Run Code Online (Sandbox Code Playgroud)

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

$scope.ddlFilter = "MAPPED";
Run Code Online (Sandbox Code Playgroud)

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

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

并且您的过滤器不再需要a .value,因此它将变为:

<tr ng:repeat="event in events  | myEventFilter:ddlFilter | orderBy:sort.column:sort.descending">
Run Code Online (Sandbox Code Playgroud)

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