На моей странице .html есть раскрывающийся список,
Падать:
<select ng-model="blisterPackTemplateSelected" data-ng-options="blisterPackTemplate as blisterPackTemplate.name for blisterPackTemplate in blisterPackTemplates">
<option value="">Select Account</option>
</select>
Я хочу выполнить действие, когда пользователь выбирает значение. Итак, в моем контроллере я сделал:
контроллер:
$scope.$watch('blisterPackTemplateSelected', function() {
alert('changed');
console.log($scope.blisterPackTemplateSelected);
});
Но изменение значения в раскрывающемся списке не запускает код: $scope.$watch('blisterPackTemplateSelected', function()
В результате я попробовал другой метод с: ng_change = 'changedValue()'
на теге выбора
и
Функция:
$scope.changedValue = function() {
console.log($scope.blisterPackTemplateSelected);
}
Но blisterPackTemplateSelected
хранится в дочерней области. Я читал, что родитель не может получить доступ к дочерней области.
Каков правильный / лучший способ выполнить что-либо при изменении выбранного значения в раскрывающемся списке? Если это метод 1, что я делаю не так со своим кодом?
источник
Я могу опоздать на это, но у меня была примерно такая же проблема.
Мне нужно было передать как идентификатор, так и имя в мою модель, но все традиционные решения заставляли меня создавать код на контроллере для обработки изменений.
Я выбрался из этого с помощью фильтра.
«Уловка» здесь:
Я использую встроенный фильтр, чтобы получить правильное имя для идентификатора
Вот плункр с работающей демкой .
источник
Пожалуйста, используйте для этого
ngChange
директиву. Например:И передайте новое значение модели в контроллер в качестве параметра:
источник
Лучшая практика - создать объект (всегда используйте. В ng-модели)
В вашем контроллере:
и в вашем шаблоне:
Теперь ты можешь просто смотреть
или вы можете использовать директиву ng-change следующим образом:
Видео "The Dot" на сайте egghead.io содержит действительно хороший обзор, как и этот очень популярный вопрос о переполнении стека: каковы нюансы наследования прототипа / прототипа области видимости в AngularJS?
источник
Вы можете передать значение ng-модели через функцию ng-change в качестве параметра:
Немного сложно узнать свой сценарий, не видя его, но это должно сработать.
источник
Вы можете сделать что-то вроде этого
вместо опции add вы должны использовать data-ng-options. Я использовал опцию Add для тестирования
источник
Я опаздываю сюда, но я решил такую же проблему таким простым и легким способом.
а функция для ng-изменения следующая;
источник
Вы получите значение выбранной опции и текст из списка / массива, используя фильтр.
editobj.FlagName = (EmployeeStatus | фильтр: {Значение: editobj.Flag}) [0] .KeyName
источник
У меня была такая же проблема, и я нашел уникальное решение. Это не лучший способ, но может оказаться простым / полезным для кого-то. Просто используйте jquery для идентификатора, класса или тега select, и тогда у вас будет доступ как к тексту, так и к значению в функции изменения. В моем случае я передаю значения параметров через sails / ejs:
Тогда в моем контроллере Angular моя функция ng-change выглядит так:
источник
Я пробовал некоторые решения, но вот базовый производственный фрагмент. Обратите внимание на вывод на консоль во время проверки качества этого сниппета.
Отметить:
Код:
Объяснение: важным моментом здесь является проверка на null измененного значения, т.е. если значение равно undefined или null, мы должны обработать эту ситуацию.
источник