Soy nuevo en AngularJS. Busqué mucho, pero no resuelve mi problema.
Recibo una opción en blanco por primera vez en el cuadro de selección.
Aquí está mi código HTML
<div ng-app="MyApp1">
<div ng-controller="MyController">
<input type="text" ng-model="feed.name" placeholder="Name" />
<select ng-model="feed.config">
<option ng-repeat="template in configs">{{template.name}}</option>
</select>
</div>
</div>
JS
var MyApp=angular.module('MyApp1',[])
MyApp.controller('MyController', function($scope) {
$scope.feed = {};
//Configuration
$scope.configs = [
{'name': 'Config 1',
'value': 'config1'},
{'name': 'Config 2',
'value': 'config2'},
{'name': 'Config 3',
'value': 'config3'}
];
//Setting first option as selected in configuration select
$scope.feed.config = $scope.configs[0].value;
});
Pero no parece funcionar. ¿Cómo puedo solucionar esto? Aquí está la demostración de JSFiddle
fuente
configs
de$scope
a$scope.feed
?Si bien todas las sugerencias anteriores funcionan, a veces necesito tener una selección vacía (que muestre el texto del marcador de posición) cuando ingrese inicialmente a mi pantalla. Entonces, para evitar que el cuadro de selección agregue esta selección vacía al principio (o, a veces, al final) de mi lista, estoy usando este truco:
código HTML
<div ng-app="MyApp1"> <div ng-controller="MyController"> <input type="text" ng-model="feed.name" placeholder="Name" /> <select ng-model="feed.config" ng-options="template.value as template.name for template in feed.configs" placeholder="Config"> <option value="" selected hidden /> </select> </div> </div>
Ahora que ha definido esta opción vacía, el cuadro de selección está contento, pero lo mantiene oculto.
fuente
Aquí hay un violín actualizado: http://jsfiddle.net/UKySp/
Necesitaba establecer el valor de su modelo inicial en el objeto real:
$scope.feed.config = $scope.configs[0];
Y actualice su selección para que se vea así:
<select ng-model="feed.config" ng-options="item.name for item in configs">
fuente
Otro método para resolver es haciendo uso de:
$first
enng-repeat
Uso:
<select ng-model="feed.config"> <option ng-repeat="template in configs" ng-selected="$first">{{template.name}}</option> </select>
Referencias :
ngSelected : https://docs.angularjs.org/api/ng/directive/ngSelected
$ primero : https://docs.angularjs.org/api/ng/directive/ngRepeat
Salud
fuente
Hay varias formas como:
<select ng-init="feed.config = options[0]" ng-model="feed.config" ng-options="template.value as template.name for template in feed.configs"> </select>
O
$scope.feed.config = $scope.configs[0].name;
fuente
Es una especie de solución, pero funciona de maravilla. Solo agrega
<option value="" style="display: none"></option>
como relleno. Como en:<select size="4" ng-model="feed.config" ng-options="template.value as template.name for template in feed.configs"> <option value="" style="display: none"></option> </select>
fuente
Si solo desea eliminar el espacio en blanco, use ng-show y ¡listo! No es necesario inicializar el valor en JS.
<select ng-model="SelectedStatus" ng-options="x.caption for x in statusList"> <option value="" ng-show="false"></option> </select>`
fuente
Cambie su código de esta manera. Te olvidas de la opción value inside. Antes de asignar el ng-model. Debe tener un valor. Solo entonces no obtiene el valor indefinido.
<div ng-app="MyApp1"> <div ng-controller="MyController"> <input type="text" ng-model="feed.name" placeholder="Name" /> <select ng-model="feed"> <option ng-repeat="template in configs" value="template.value">{{template.name}} </option> </select> </div> </div>
JS
var MyApp=angular.module('MyApp1',[]) MyApp.controller('MyController',function($scope) { $scope.feed = 'config1'; $scope.configs = [ {'name': 'Config 1', 'value': 'config1'}, {'name': 'Config 2', 'value': 'config2'}, {'name': 'Config 3', 'value': 'config3'} ]; });
fuente
Utilice ng-value en lugar de value .
$scope.allRecs = [{"text":"hello"},{"text":"bye"}]; $scope.X = 0;
y luego en el archivo html debería ser como:
<select ng-model="X"> <option ng-repeat="oneRec in allRecs track by $index" ng-value="$index">{{oneRec.text}}</option> </select>
fuente
Para mí, la respuesta a esta pregunta fue usar
<option value="" selected hidden />
como lo propuso @RedSparkle más agregarng-if="false"
para trabajar en IE.Entonces, mi opción completa es (tiene diferencias con lo que escribí antes, pero esto no importa debido a ng-if):
<option value="" ng-if="false" disabled hidden></option>
fuente
Finalmente funcionó para mí.
<select ng-init="mybasketModel = basket[0]" ng-model="mybasketModel"> <option ng-repeat="item in basket" ng-selected="$first">{{item}}</option> </select>
fuente
También verifique si tiene algún valor falso o no. Angularjs insertará una opción vacía si tiene un valor falso. Luché durante 2 días solo por un valor falso. Espero que sea de ayuda para alguien.
Tenía opciones como [0, 1] e inicialmente establecí el modelo en 0 debido a que se insertó una opción vacía. La solución alternativa para esto fue ["0", "1"].
fuente