قم بتعيين القيمة الافتراضية داخل ngSelect
-
21-12-2019 - |
سؤال
لدي 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