ng-init未在ng-options中设置第一个选择选项

时间:2016-02-25 19:16:34

标签: javascript angularjs forms html-select

我有一个简单的select元素,我正在尝试初始化该值,但由于某种原因它失败了,即没有取得初始值

HTML

<select class="select-form-control"
    ng-model="lossGainProb"
    ng-options="item.display for item in possibility track by item.value" 
    ng-init="EventDetails.lossGainProb">

的JavaScript

$scope.possibility = [{
    display: '0%',
    value: 0
}, {
    display: '5%',
    value: 5
}];

$scope.EventDetails.lossGainProb = 5;

5 个答案:

答案 0 :(得分:1)

根据给定的代码,我创建了小型工作演示here

<div ng-app="myApp" ng-controller="myCtrl">    
<select class="select-form-control" ng-model="lossGainProb" 
  ng-options="item.value as item.display for item in possibility">
</select>
</div>

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
       $scope.possibility =[ {
            display : '0%',
            value : 0
        }, {
            display : '5%',
            value : 5
        }];

    $scope.lossGainProb = $scope.possibility[1].value;

});

答案 1 :(得分:0)

这将在不使用ng-init的情况下工作 - 在控制器中初始化:

$scope.lossGainProb = {};
$scope.lossGainProb.value = 5; 
如果可能,不应使用

ng-init - https://docs.angularjs.org/api/ng/directive/ngInit

答案 2 :(得分:0)

您需要通过angular跟踪列表的跟踪项。试试这个:

$scope.possibility = [{
    display: '0%',
    value: 0
}, {
    display: '5%',
    value: 5
}];

$scope.EventDetails.lossGainProb = $scope.possibility.filter(function(item){ return item.value === 5})[0];

工作码本http://codepen.io/gpincheiraa/pen/bpbMom

答案 3 :(得分:0)

我看到两个错误:

  1. 您错误地使用了ngInit。它没有为ngModel指令指定初始绑定,它是在初始化作用域后根据作用域计算的表达式。要指定初始模型绑定,您需要类似

    的内容
    <select ng-init="lossGainProb = EventDetails.lossGainProb"></select>
    

    另一种(更好的)方法是直接在控制器中指定它,例如

    $scope.lossGainProb = $scope.EventDetails.lossGainProb;
    
  2. 您的ngModel受到整个&#34;可能性的影响&#34;对象而不仅仅是value属性。我假设您只想要value作为您的模型值。在这种情况下,您应该将ngOptions设置为

    <select ng-options="item.value as item.display for item in possibility"></select>
    

    这指定ngModel应绑定到item.valueitem.display用作标签。

  3. 将这些放在一起,select应该是

    <select class="select-form-control"
        ng-model="lossGainProb"
        ng-options="item.value as item.display for item in possibility"
        ng-init="lossGainProb = EventDetails.lossGainProb">
    </select>
    

    Here是一个有效的普通人。

答案 4 :(得分:0)

另一种方法是这个:

<select class="select-form-control" ng-init="lossGainProb = possibility[1].value" ng-model="lossGainProb" ng-options="item.value as item.display for item in possibility"> </select>