选择元素的ng-init

时间:2014-10-04 10:14:04

标签: angularjs

我正在使用以下代码进行ng-init:

<select ng-model="yourSelect3"
      class="form-control"
      ng-init="yourSelect3=requirements.Item2[0]"
      ng-options="yourSelect3.StateName for yourSelect3 in requirements.Item2">  
</select>

但是不显示初始值。为什么呢?

2 个答案:

答案 0 :(得分:3)

您的问题是ng-init没有按照您的想法执行。它主要用于某些使用ng-select的情况。 Angular doc:https://docs.angularjs.org/api/ng/directive/ngInit

您需要做的只是在控制器中初始化您的模型:

$scope.yourSelect3 = $scope.requirements.item2[0];

你的ng-options在语法上是正确的。但是,我建议您更改ng-options,以便迭代器不与您的模型共享名称;这可能导致各种混乱

<select ng-model="yourSelect3"
      class="form-control"
      ng-options="item.StateName for item in requirements.Item2">  
</select>

答案 1 :(得分:-2)

REWRITE:我之前的回答有点不清楚,错过了第二次错误。

第一个问题:ng-options中的'yourSelect3'是'temp'变量,仅在ng-options 的上下文中使用。您不能将其用作ng模型。

第二个问题:你在ng-options中使用'StateName'属性作为选择值,但你的ng-init试图将整个对象分配为选择值。

因此...

如果你想让StateName作为choosenValue使用..

<select ng-model="choosenValue"
      class="form-control"
      ng-init="choosenValue=requirements.Item2[0].StateName"
      ng-options="yourSelect3.StateName for yourSelect3 in requirements.Item2">  
</select>
<!-- for debugging --> {{ choosenValue }} <!-- should show a statename -->

否则,如果您希望将对象作为choosenValue但显示州名作为选项标题使用..

<select ng-model="choosenValue"
      class="form-control"
      ng-init="choosenValue=requirements.Item2[0]"
      ng-options="yourSelect3 as yourSelect3.StateName for yourSelect3 in requirements.Item2">  
</select>
<!-- for debugging --> {{ choosenValue | json }} <!-- should show the object -->
<!-- for debugging --> {{ choosenValue.StateName }} <!-- should show a statename -->