سؤال

لدي ngSelect مع بعض الخيارات فيه.

<select data-ng-model="type" data-ng-change="option(type)">
   <option data-ng-repeat="type in languages" value="{{type.i18n}}">
        {{type.language}}
    </option>
</select>

وجهاز تحكم

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" }
    ];
}])

أريد أن يكون لدى ngSelect خيار افتراضي، في حالتي:"إنجليزي".لقد حاولت ضبطه على:

$scope.type = $scope.languages[0].language; // English
$scope.type = $scope.languages[0]; //The whole darn json object.

ساعدنى من فضلك؟

هل كانت مفيدة؟

المحلول

جرب بهذه الطريقة

giveacodicetagpre.

/ js code

giveacodicetagpre.

نصائح أخرى

ماذا عن استخدام ngSelected? http://docs.angularjs.org/api/ng/directive/ngSelected

<option ng-selected="$index==0"></option>

أو

<option ng-selected="type.language=='English'"></option>

مثال العمل: 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>

شبيبة:

.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;
}]);

ملحوظات:

  • لقد قمت بإزالة $translate خدمة لسهولة الاستنساخ.
  • لقد تغيرت ng-changed رد الاتصال إلى أ $watch على ال $scope ولكن هذا مجرد اختيار جمالي.
  • كان التغيير الحاسم هو أنك كنت تختار lang.i18n ل type ولكن تم الإعداد type ل lang.language, ، مما أدى إلى عدم وجود تطابقات في optionقائمة.

ليس لدي سمعة كافية للتعليق لذا سأتركها كإجابة.

إجابة راميش راجيندران صحيحة، لكنك حاولت استخدام إجابة مختلفة ngOptions بناء الجملة.إذا كنت تستخدم label for value in array بناء الجملة، فيجب عليك ربط سمة النموذج بالكائن بأكمله.إذا كنت تستخدم بناء الجملة في تعليقك، وهو select as label for value in array ثم عليك ربط النموذج بالتحديد.

من أجل الكلمات، يعمل مثاله، وعلى المثال الخاص بك في التعليق للعمل الذي تحتاجه لاستبداله $scope.selectedlanguage = $scope.languages[0]; مع $scope.selectedlanguage = $scope.languages[0].i18n;

افحص ال حدد وثائق التوجيه لمزيد من المعلومات

هذا عملت بالنسبة لي:

giveacodicetagpre.

مثال مباشر: Plunker

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top