Legen Sie den Standardwert in ngSelect fest
-
21-12-2019 - |
Frage
Ich habe ein ngSelect mit einigen Optionen darin.
<select data-ng-model="type" data-ng-change="option(type)">
<option data-ng-repeat="type in languages" value="{{type.i18n}}">
{{type.language}}
</option>
</select>
Und ein Controller
angular.module('navigation', [])
.controller('NavCtrl',['$scope','$translate', function($scope,$translate){
$scope.option = function(type){
console.log(type) //this display the i18n value of languages
$translate.use(type);
}
$scope.languages = [
{ language: "English", i18n: "en_EN"},
{ language: "Swedish", i18n : "se_SE" }
];
}])
Ich möchte, dass ngSelect eine Standardoption hat, in meinem Fall:"Englisch".Ich habe versucht, es auf Folgendes einzustellen:
$scope.type = $scope.languages[0].language; // English
$scope.type = $scope.languages[0]; //The whole darn json object.
Hilfe bitte?
Lösung
Versuchen Sie diesen Weg
generasacodicetagpre.// js code
generasacodicetagpre.Andere Tipps
Wie ist es mit der Verwendung von ngSelected
? http://docs.angularjs.org/api/ng/directive/ngselected
oder
generasacodicetagpre.Arbeitsbeispiel: http://plnkr.co/edit/yv8gew3IDGxjH666UmlC?p=preview
<select data-ng-model="selectedType">
<option data-ng-repeat="lang in languages" value="{{lang.i18n}}">
{{lang.language}}
</option>
</select>
JS:
.controller('NavCtrl',['$scope', function($scope){
$scope.$watch('selectedType', function(type){
if (!type) return;
console.log(type) //this display the i18n value of languages
// $translate.use(type);
});
$scope.languages = [
{ language: "English", i18n: "en_EN"},
{ language: "Swedish", i18n : "se_SE" }
];
$scope.selectedType = $scope.languages[0].i18n;
}]);
Anmerkungen:
- Habe das entfernt
$translate
Service zur Erleichterung der Reproduktion. - Habe ein geändert
ng-changed
Rückruf an a$watch
auf der$scope
aber das ist nur eine ästhetische Entscheidung. - Die entscheidende Änderung bestand darin, dass Sie sich für das entschieden haben
lang.i18n
fürtype
aber wir waren untergegangentype
Zulang.language
, was zu keinen Übereinstimmungen in der führtoption
s Liste.
Ich habe nicht genug Ruf, um einen Kommentar abzugeben, also belasse ich es als Antwort.
Die Antwort von Ramesh Rajendran ist richtig, aber Sie haben es mit einer anderen versucht ngOptions
Syntax.Wenn Sie die verwenden label for value in array
Syntax, dann müssen Sie das Modellattribut an das gesamte Objekt binden.Wenn Sie die Syntax in Ihrem Kommentar verwenden, ist das der Fall select as label for value in array
Dann müssen Sie das Modell an die Auswahl binden.
Mit anderen Worten, sein Beispiel funktioniert, und damit Ihr Beispiel zum Kommentar funktioniert, müssen Sie ihn ersetzen $scope.selectedlanguage = $scope.languages[0];
mit $scope.selectedlanguage = $scope.languages[0].i18n;
Überprüf den Select-Anweisungsdokumentation Für weitere Informationen
Das funktionierte für mich:
generasacodicetagpre.LIFE