使用ng-init选择的默认值

时间:2015-08-07 10:22:48

标签: javascript angularjs

我正在尝试设置选择框的默认值,但我很难尝试,我不知道出了什么问题。这是我的代码

<select class="form-control" ng-init="newQuestion.positionOnSurvey=vm.questionsPositions[0]" ng-model="newQuestion.positionOnSurvey">
                                    <option ng-repeat="position in vm.questionsPositions track by $index" value="{{position}}">{{position}}</option>
</select>

vm.questionsPositions [0] = 5,所以这不是问题。我没有在我的控制器中初始化newQuestion,但它应该不是ng-init的情况?

更新:

现在我正在初始化这样的字段,但它仍然无效。

vm.newQuestion = {};
vm.newQuestion.positionOnSurvey = vm.questionsPositions[0];

<select class="form-control" ng-model="vm.newQuestion.positionOnSurvey">
    <option ng-repeat="position in vm.questionsPositions track by $index" value="{{position}}">{{position}}</option>
</select>

5 个答案:

答案 0 :(得分:1)

您应该使用控制器来初始化值,并使用 ng-options

创建下拉列表的更好方法

像:

<强> HTML:

<select class="form-control" ng-model="newQuestion.positionOnSurvey" ng-options="position for position in vm.questionsPositions"></select>

<强>控制器:

        $scope.vm ={};
        $scope.newQuestion ={};
        $scope.vm.questionsPositions = [12,14];
        $scope.newQuestion.positionOnSurvey = $scope.vm.questionsPositions[0];

因此选择列表中的初始值为12

答案 1 :(得分:0)

您可以尝试使用默认值在控制器中初始化$newQuestion.positionOnSurvey,因此视图中的选择器将具有初始值。

答案 2 :(得分:0)

  

ngInit的唯一合适用途是对ngRepeat [...]的特殊属性进行别名处理。除了这种情况,您应该使用控制器而不是ngInit来初始化范围上的值。

根据ngInit API,我建议您在控制器上设置所选内容的初始值。

请参阅:controller guide

答案 3 :(得分:0)

<select class="form-control" ng-init="vm.newQuestion.positionOnSurvey=vm.questionsPositions[0]" ng-model="newQuestion.positionOnSurvey">
                                    <option ng-repeat="position in vm.questionsPositions track by $index" value="{{position}}">{{position}}</option>
</select>

你宣布&#34; newQuestion&#34; vm对象中的变量。因此,您可以在html中访问该变量为&#34; vm.newQuestion&#34;

答案 4 :(得分:0)

您确定ng-options无效吗?这段代码可以解决问题。

<select ng-model="vm.newQuestion.positionOnSurvey" ng-options="position for position in vm.questionsPositions"></select>