ng-init 没有在 ng-options 中设置第一个 select 选项
ng-init not setting first select options in ng-options
我有一个简单的 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;
这将在不使用 ng-init
的情况下工作 - 在控制器中初始化:
$scope.lossGainProb = {};
$scope.lossGainProb.value = 5;
如果可能,不应使用 ng-init
- https://docs.angularjs.org/api/ng/directive/ngInit.
您需要 angular 跟踪的列表的跟踪项目。试试这个:
$scope.possibility = [{
display: '0%',
value: 0
}, {
display: '5%',
value: 5
}];
$scope.EventDetails.lossGainProb = $scope.possibility.filter(function(item){ return item.value === 5})[0];
基于给定的代码,我创建了小型工作演示 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;
});
我看到两个错误:
您使用的 ngInit
不正确。它不指定 ngModel
指令的初始绑定,它是一个在范围初始化后根据范围计算的表达式。要指定初始模型绑定,您需要
<select ng-init="lossGainProb = EventDetails.lossGainProb"></select>
另一种(更好的)方法是直接在控制器中指定它,例如
$scope.lossGainProb = $scope.EventDetails.lossGainProb;
您的 ngModel
绑定到整个 "possibility" 对象,而不仅仅是 value
属性。我假设您只希望 value
成为您的模型值。在这种情况下,您应该将 ngOptions
设置为
<select ng-options="item.value as item.display for item in possibility"></select>
这指定 ngModel
应该绑定到 item.value
并使用 item.display
作为标签。
将这些放在一起,您的 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 是一个工作的 Plunker。
另一种方法是:
<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>
我有一个简单的 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;
这将在不使用 ng-init
的情况下工作 - 在控制器中初始化:
$scope.lossGainProb = {};
$scope.lossGainProb.value = 5;
如果可能,不应使用 ng-init
- https://docs.angularjs.org/api/ng/directive/ngInit.
您需要 angular 跟踪的列表的跟踪项目。试试这个:
$scope.possibility = [{
display: '0%',
value: 0
}, {
display: '5%',
value: 5
}];
$scope.EventDetails.lossGainProb = $scope.possibility.filter(function(item){ return item.value === 5})[0];
基于给定的代码,我创建了小型工作演示 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;
});
我看到两个错误:
您使用的
ngInit
不正确。它不指定ngModel
指令的初始绑定,它是一个在范围初始化后根据范围计算的表达式。要指定初始模型绑定,您需要<select ng-init="lossGainProb = EventDetails.lossGainProb"></select>
另一种(更好的)方法是直接在控制器中指定它,例如
$scope.lossGainProb = $scope.EventDetails.lossGainProb;
您的
ngModel
绑定到整个 "possibility" 对象,而不仅仅是value
属性。我假设您只希望value
成为您的模型值。在这种情况下,您应该将ngOptions
设置为<select ng-options="item.value as item.display for item in possibility"></select>
这指定
ngModel
应该绑定到item.value
并使用item.display
作为标签。
将这些放在一起,您的 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 是一个工作的 Plunker。
另一种方法是:
<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>