l'option sélectionnée ne fonctionne pas à partir d'AngularJS modèle
Je suis nouveau sur AngularJS, de sorte qu'il peut être vraiment simple, mais je n'arrive pas à le comprendre. Le problème n'est pas dans le AngularJS code lui-même, mais je suis sûr que c'est en quelque sorte lié, parce que je l'ai essayé dans un blanc pur HTML de la page de test, et il a travaillé, comment il est censé.
headers.html:
<table>
<thead>
<tr>
<td colspan="2" align="right">
Sort headers by:
<select ng-model="sortHeaders">
<option value="rating">Rating</option>
<option value="id" selected>ID</option>
</select>
</td>
</tr>
<tr>
<th>Rating</th>
<th>Header</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="header in headers | filter:search | orderBy:sortHeaders">
<td>{{header.rating}}</td>
<td>{{header.title}}</td>
</tr>
</tbody>
Le problème ici est, comme le dit le titre, avec <option value="id" selected>
pas être sélectionné au chargement de la page, la façon dont il est censé être.
headers.html est, évidemment, un modèle de sortie de données. Et il fait le travail parfaitement, sauf pour ce selected
problème.
Il est chargé de la headers_app.js:
var headersApp = angular.module('headersApp', []);
headersApp.directive('headers', [function () {
return {
restrict: 'E',
controller: function($scope, $http) {
$http.get('/api/headers.json').success(function(data) {
$scope.headers = data.headers;
});
},
templateUrl: '/templates/headers.html',
replace: true,
link: function (scope, element, attrs) {
console.log('linked headersApp');
}
};
}]);
et, bien sûr, il y a ce gars à l'intérieur de index.html:
...
<headers>
</headers>
...
Une fois de plus, tout le reste fonctionne comme prévu. Le seul problème est que supposé être sélectionné à l'option n'est pas sélectionnée au chargement de la page.
Des idées?
Vous devez vous connecter pour publier un commentaire.
Comme dit dans d'autres réponses, vous pouvez le faire de cette façon également:
selected
il est encore là? Angulaire pourrait lancer loin, parce qu'il va sélectionnez l'option qui correspond au modèle dans la sélectionng-selected="true"
il l'a fait pour moi, merci!Prendre un coup d'oeil à angularjs docs. Vous pouvez utiliser le ngSelected pour cela.
Exemple dans les docs:
HTML:
L'utilisation de l'expression en ng-sélectionné
Angulaire vous devez utiliser le ngSelected directive à la place de certains, comme suit:
https://docs.angularjs.org/api/ng/directive/ngSelected
selected
Donc je l'ai résolu en ajoutant à en-têtes.app
et le remplacement de mon
<select>
bloc avecJe n'ai pas utilisé
ng-options
car dans mon cas c'est un 1-d tableau de valeurs et à l'aide deng-options
n'est pas, dans ce cas, le besoin, ni le plus élégant (comme il me semble), solution.Et merci les gars pour les liens vers
ng-selected
, vraiment utile.utilisation
en tant que par défaut de votre