如何在anjularJs中的下拉值中设置数组值

时间:2015-08-12 07:12:42

标签: angularjs angularjs-ng-repeat

我想在dropdown(select)值中传递数组值,但它总是在下拉值中显示数组键。

我正在尝试下面给出的代码

$databases = array(
    'db1','db2','db3','db4','db5',
    );

角色代码

<select ng-model="databases" ng-change="showTables($index)" ng-options="key as value for (key,value) in databases" >
<option value="">-- choose Database --</option>

2 个答案:

答案 0 :(得分:0)

ng-options就像这样构建:

ng-options="key as value for (key,value) in databases" 

in之后,您有列表。在forin之间,它将用于单个select

然后你有2个其他属性。这是关键和价值。值是您要在列表中打印的内容,即用户可见的内容。密钥是将作为“值”放在DOM中的数据。

您希望在数值中设置数组属性。因为这里有简单的数据,并且列表中可见的内容与DOM值中的内容之间没有任何区别,您可以这样做:

ng-options="value for value in databases" 

此外,我还注意到您在databases上使用了变量ng-model。这不是一个好主意,当您选择一个值时,这将删除您的列表。你必须使用其他var。

答案 1 :(得分:0)

如果数组仅包含String,则只需使用ng-repeat:

<强> HTML

<div ng-controller="DatabaseSelectExampleController as vm">
    <select ng-model="vm.selectedDatabase">
        <option ng-repeat="actDatabase in vm.databases" value="{{actDatabase}}">
            {{actDatabase}}
        </option>
    </select>
</div>

<强> JS

angular.module('yourApp')
    .controller('DatabaseSelectExampleController', function(){
        this.databases = ['database one', 'someother db', 'a db aswell'];
        this.selectedDatabase = this.databases[0];
    });