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?

War es hilfreich?

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

generasacodicetagpre.

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ür type aber wir waren untergegangen type Zu lang.language, was zu keinen Übereinstimmungen in der führt options 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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top