首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用AngularJS和ng-repeat初始化select

使用AngularJS和ng-repeat初始化select
EN

Stack Overflow用户
提问于 2013-09-06 06:42:11
回答 5查看 258.6K关注 0票数 137

我正在尝试让select-box从一个预先填充的选项开始,在AngularJS 1.1.5中使用ng-repeat。取而代之的是,select在开始时总是没有选择任何内容。它还有一个空选项,这是我不想要的。我认为没有选择任何内容会有副作用。

我可以使用ng-options而不是ng-repeat来实现这一点,但在这种情况下,我想使用ng-repeat。尽管我的缩小范围的示例没有显示它,但我还想设置每个选项的title属性,据我所知,使用ng-options无法做到这一点。

我不认为这与常见的AngularJs作用域/原型继承问题有关。至少我在Batarang检查的时候没有看到任何明显的东西。此外,当您使用UI在select中选择一个选项时,模型会正确更新。

下面是HTML:

代码语言:javascript
复制
<body ng-app ng-controller="AppCtrl">
    <div>
        Operator is: {{filterCondition.operator}}
    </div>
    <select ng-model="filterCondition.operator">
       <option 
           ng-repeat="operator in operators" 
           value="{{operator.value}}"
       >
           {{operator.displayName}}
       </option>
    </select>
</body>

和JavaScript:

代码语言:javascript
复制
function AppCtrl($scope) {

    $scope.filterCondition={
        operator: 'eq'
    }

    $scope.operators = [
        {value: 'eq', displayName: 'equals'},
        {value: 'neq', displayName: 'not equal'}
     ]
}

JS小提琴:http://jsfiddle.net/coverbeck/FxM3B/2/

EN

回答 5

Stack Overflow用户

发布于 2013-09-06 06:57:19

对于select标记,angular提供了ng-options指令。它为您提供了设置选项和设置默认值的特定框架。下面是使用ng-options的更新后的fiddle,它可以像预期的那样工作:http://jsfiddle.net/FxM3B/4/

更新的HTML (代码保持不变)

代码语言:javascript
复制
<body ng-app ng-controller="AppCtrl">
<div>Operator is: {{filterCondition.operator}}</div>
<select ng-model="filterCondition.operator" ng-options="operator.value as operator.displayName for operator in operators">
</select>
</body>
票数 36
EN

Stack Overflow用户

发布于 2015-02-10 14:49:26

angular将一个空的option元素注入select的事实是,默认情况下绑定到它的模型对象在初始化时带有一个空值。

如果您想选择一个默认选项,那么您可以在控制器中的作用域上设置它

代码语言:javascript
复制
$scope.filterCondition.operator = "your value here";

如果你想要一个空的选项占位符,这对我是有效的

代码语言:javascript
复制
<select ng-model="filterCondition.operator" ng-options="operator.id as operator.name for operator in operators">
  <option value="">Choose Operator</option>
</select>
票数 10
EN

Stack Overflow用户

发布于 2013-09-06 07:56:17

感谢TheSharpieOne指出了ng-selected选项。如果这是作为答案而不是评论发布的,我会让它成为正确的答案。

下面是一个有效的JSFiddle:http://jsfiddle.net/coverbeck/FxM3B/5/

我还更新了fiddle以使用title属性,这是我在最初的帖子中遗漏的,因为它不是问题的原因(但这是我想使用ng-repeat而不是ng-options的原因)。

HTML:

代码语言:javascript
复制
<body ng-app ng-controller="AppCtrl">
<div>Operator is: {{filterCondition.operator}}</div>
<select ng-model="filterCondition.operator">
   <option ng-repeat="operator in operators" title="{{operator.title}}" ng-selected="{{operator.value == filterCondition.operator}}" value="{{operator.value}}">{{operator.displayName}}</option>
</select>
</body>

JS:

代码语言:javascript
复制
function AppCtrl($scope) {

    $scope.filterCondition={
        operator: 'eq'
    }

    $scope.operators = [
        {value: 'eq', displayName: 'equals', title: 'The equals operator does blah, blah'},
        {value: 'neq', displayName: 'not equal', title: 'The not equals operator does yada yada'}
     ]
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18647098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档