Подтвердить что ты не робот

AngularJS ngModel директива в select

Я работаю над проектом angularjs, и у меня проблема с ngModel не обязательным в пределах select. Но та же концепция работает в другом теге select и на той же странице html. Ниже приведен код.

  <select ng-model="selectedFont" 
          ng-options="font.title for font in fonts" 
          ng-change="onFontChange()">
  </select>

onFontChange() функция помещается в контроллер.

Любая помощь очень заметна... Спасибо заранее.

4b9b3361

Ответ 1

Основываясь на игре Тони-Пони:

<div ng-app ng-controller="MyCtrl">
    <select ng-model="opt"
            ng-options="font.title for font in fonts"
            ng-change="change(opt)">
    </select>

    <p>{{opt}}</p>
</div>

С контроллером:

function MyCtrl($scope) {
    $scope.fonts = [
        {title: "Arial" , text: 'Url for Arial' },
        {title: "Helvetica" , text: 'Url for Helvetica' }
    ];
    $scope.change= function(option){
        alert(option.title);
    }
}

http://jsfiddle.net/basarat/3y5Pw/43/

Ответ 2

Сначала создайте данные (могут быть локальными или с сервера) в контроллере. И инициализируйте значение по умолчанию, которое вынуждает элемент по умолчанию, выбранный в форме HTML.

// supported languages
$scope.languages = ['ENGLISH', 'SPANISH', 'RUSSIAN', 'HINDI', 'NEPALI'];
// init default language
$scope.language = 'ENGLISH';

Теперь в вашей HTML-форме

<select class="form-control" ng-model="language">
    <option ng-repeat="language in languages">{{language}}</option>
</select>


Снимок экрана здесь (примечание bootstrap CSS используется и не включено здесь).

enter image description here


Вы можете выполнить тест в контроллере, независимо от того, работает ли это изменение.

$scope.$watch('language', function (newVal, oldVal) {
    console.log(oldVal + " -> " + newVal);
});

ENGLISH → RUSSIAN

РОССИЯ → ИСПАНСКИЙ

ИСПАНСКИЙ → РОССИЙСКИЙ

Надеюсь, это полезно. Спасибо!