使用ng-options在AngularJS中使用JSON填充select

ely*_*33t 5 javascript json angularjs

编辑:我的代码实际上工作,我只是一个与无关问题的白痴.感谢大家的投入.

所以我有一个JSON对象数组,格式如下:

[{"id":"id1", "text":"text1"}, {"id":"id2", "text":"text2"},....]
Run Code Online (Sandbox Code Playgroud)

我想使用这些填充AngularJS选择字段,文本字段作为显示文本,id字段作为值,或者与模型绑定的任何内容.我环顾四周,但不能为我的生活弄清楚我需要做什么.

现在我有我的选择,这没有任何显示:

<select name="field" ng-model="npe.formData.field" ng-options="field.id as field.text for field in fields">
Run Code Online (Sandbox Code Playgroud)

以这种方式执行ng-options会导致显示内容,但显然会导致绑定到模型的值不正确:

ng-options="field as field.text for field in fields"
Run Code Online (Sandbox Code Playgroud)

我看到有人在谈论使用"(键,值)",但我无法理解它是如何工作的.

Gab*_*elG 10

你需要(键,值),以防你重复地图,事实并非如此 - 在你的例子中,你正在迭代一个对象数组.(键,值)的用法是:

$scope.map={item1:'a',item2:'b'};
...
<li ng-repeat="(id,text) in map">{{id}}) {{text}}</li>
Run Code Online (Sandbox Code Playgroud)

这将使"item1"成为"等等".

为什么你提到下面的片段不起作用?

ng-options="field.id as field.text for field in fields"
Run Code Online (Sandbox Code Playgroud)

看看这个小提琴 - http://jsfiddle.net/7eqsc/2/,它就像一个魅力,并用正确的ID更新模型.

<div ng-app="myApp">
<div ng-controller="myCtrl">

    <div ng-repeat="(id,text) in notes">{{text}}</div>
    <select ng-model="model.id" ng-options="note.id as note.text for note in notes" ></select>

    Selected id:{{model.id}}

</div>
Run Code Online (Sandbox Code Playgroud)