簡體   English   中英

使用ng-init進行選擇的默認值

[英]Default value of select using ng-init

我正在嘗試為選擇框設置默認值,但是我很難嘗試做到這一點,而且我不知道出什么問題了。 這是我的代碼

<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>

您應該使用控制器來初始化值,以及使用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

您可以嘗試使用默認值在控制器中初始化$newQuestion.positionOnSurvey ,因此視圖中的選擇器將具有初始值。

ngInit的唯一適當用法是為ngRepeat [...]的特殊屬性設置ngRepeat 除了這種情況,您應該使用控制器而不是ngInit來初始化作用域上的值。

根據ngInit API,建議您在控制器上設置所選內容的初始值。

請參閱: 控制器指南

<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>

您正在vm對象中聲明“ newQuestion”變量。 因此,您可以將HTML中的變量作為“ vm.newQuestion”訪問

您確定ng-options不起作用嗎? 這段代碼可以解決問題。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM