Странное поведение ionic при выборе, ng-модель не будет обновляться

Я испытываю что-то странное, этот пример работает в codepen, но не будет работать в моем приложении Ionic.

Когда я меняю параметр в теге выбора, я хочу показать выбранное значение, но это не сработает, оно показывает undefined, я пробовал разными способами.

Это не исходный код, исходный извлекает значения из внешнего API и заполняет параметры с помощью ngOptions (который работает, он заполняет нормально). Но это не будет обновлять значение в контроллере.

Поэтому я решил сделать его более простым, и он все равно не будет работать:

HTML

<select ng-model="optionSelected" ng-change="selectUpdated()">
    <option value="">Select an option</option>
    <option value="h">Hello</option>
    <option value="b">Bye</option>
</select>

JAVASCRIPT

$scope.selectUpdated = function() {
    console.log('Updated');
    console.log($scope.optionSelected);
};

Я не думаю, что нужен дополнительный код, HTML содержится в ion-view и ion-content. Ошибки не отображаются, только вывод «Обновлено» и undefined.

При смене опции получаю undefined. Но этот же код в codepen работает просто отлично. /а>

Может кто-нибудь сказать мне, что может происходить, что вызывает это странное поведение?

Заранее спасибо.


person Ariel    schedule 14.07.2015    source источник


Ответы (3)


Решение найдено, передайте свойство ngModel в качестве параметра в файле ngChange.

HTML

<select ng-model="optionSelected" ng-change="selectUpdated(optionSelected)">
    <option value="">Select an option</option>
    <option value="h">Hello</option>
    <option value="b">Bye</option>
</select>

JS

$scope.selectUpdated = function(optionSelected) {
    console.log('Updated');
    console.log(optionSelected);
};
person Ariel    schedule 14.07.2015

Сегодня у меня была такая же проблема, и мне пришлось создать обходной путь, чтобы использовать выбор в обычном режиме.

JavaScript

$scope.updatePreferredLanguageValue = function() {
   $scope.PreferredLanguage = this.PreferredLanguage;
};

HTML

<select ng-model="PreferredLanguage" ng-options="Language.id as Language.name for Language in LanguageList" id="LanguageListSelect" name="LanguageListSelect" ng-change="updatePreferredLanguageValue()">
</select>

Итак, в основном у меня есть метод, который вызывается при изменении значения, который гарантирует, что изменение установлено в переменной $scope. Не красиво, но работает.

person Vasco Cardoso    schedule 17.02.2016

Попробуйте использовать $parent в вашей ng-модели и вызвать ее из вашего контроллера.

Пример

<select ng-model="$parent.selectedCar">
 <option>...</option>
</select>

Ссылка: https://github.com/angular/angular.js/wiki/Understanding-Scopes

person afifahmi    schedule 09.06.2016