Me gustaría establecer un valor predeterminado para mi componente seleccionado usando angular ng-options He visto otros temas sobre esta pregunta pero trato de usarla en mi caso pero no la resuelvo. Entonces tengo un componente selecto

<select ng-options="dis.entidade.idEntidade as dis.entidade.nome for dis in distritos" ng-model="distrito.entidade.idEntidade" class="form-control">
    <option></option>   
</select>

Y me gustaría establecer un valor predeterminado.

0
Eduardo Krakhecke 17 oct. 2017 a las 15:02

3 respuestas

La mejor respuesta

Puede establecer en la propiedad no-model. Ejemplo:

$scope.distrito.entidade.idEntidade = $scope.distritos[0].entidade.idEntidade;
angular.module('app', []).controller('select', function($scope) {
  $scope.distrito = {};
  $scope.distrito.entidade = {};

  $scope.distritos = [{
    entidade: {
      nome: 'test1',
      idEntidade: 1
    }
  }, {
    entidade: {
      nome: 'test2',
      idEntidade: 2
    }
  }];

  $scope.distrito.entidade.idEntidade = $scope.distritos[0].entidade.idEntidade;
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="select">
  <select ng-options="dis.entidade.idEntidade as dis.entidade.nome for dis in distritos" ng-model="distrito.entidade.idEntidade" class="form-control">
 
   </select>
</div>
1
BrTkCa 17 oct. 2017 a las 12:12
<select ng-options="dis.entidade.idEntidade as dis.entidade.nome for dis in distritos" ng-model="distrito.entidade.idEntidade" class="form-control">
<option>THIS IS YOUR DEFAULT VALUE</option>   

Si desea tener un valor predeterminado con algún significado, debe hacerlo en su controlador, por ejemplo:

if (!$scope.distrito.entidade.idEntidade)
  $scope.distrito.entidade.idEntidade = 'Some default value';
0
user4656987user4656987 17 oct. 2017 a las 12:19

En su controlador puede configurar $scope.distrito.entidade.idEntidade = "defaultValue". Su modelo ng es el valor seleccionado, por lo que si no lo inicializa en su controlador, el valor será indefinido. Si establece un valor para el modelo relevante durante la inicialización, este será el valor seleccionado por defecto.

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
  $scope.somethingList = [];
  $scope.somethingList.push("Something1");
  $scope.somethingList.push("Something2");
  $scope.somethingList.push("Something3");
  
  $scope.selectedSomething = $scope.somethingList[0];
});
<!DOCTYPE html>
<html>

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
</head>

<body>
  <div ng-app="myApp" ng-controller="myCtrl">
    <select ng-options="something for something in somethingList" ng-model="selectedSomething"></select>
  </div>
</body>

</html>
0
Patrick 17 oct. 2017 a las 12:11