AngularJS - Почему значение ng переопределяет атрибут значения и как этого избежать?

Итак, у меня есть следующий код:

<input ng-model="refreshedByExample" type="text">
<select ng-model="example" ng-change="refreshedByExample = example">
    <option value="1" ng-value="valueForRefreshedByExample1">1</option>
    <option value="2" ng-value="valueForRefreshedByExample2">2</option>
    <option value="3" ng-value="valueForRefreshedByExample3">3</option>
</select>

Значение атрибута value отличается от значения в ng-value. Но каким-то образом это переопределяется, и атрибут value получает то же значение, что и ng-value. Я получаю что-то вроде этого:

<input ng-model="refreshedByExample" type="text">
<select ng-model="example" ng-change="refreshedByExample = example">
    <option value="valueForRefreshedByExample1" ng-value="valueForRefreshedByExample1">1</option>
    <option value="valueForRefreshedByExample2" ng-value="valueForRefreshedByExample2">2</option>
    <option value="valueForRefreshedByExample3" ng-value="valueForRefreshedByExample3">3</option>
</select>

Есть ли способ предотвратить это? Мне нужно, чтобы в атрибуте value было другое значение, чем в ng-value.

Любые идеи? Спасибо всем.


person mkmnstr    schedule 20.11.2016    source источник
comment
У вас не может быть обоих, и идея устанавливать их по-разному не имеет смысла. Это проблема X-Y. Вам действительно нужно подробно объяснить, чего вы пытаетесь достичь   -  person charlietfl    schedule 20.11.2016
comment
Привет. Проблема объясняется здесь: stackoverflow.com/questions/40699857/ Это было решено, но обнаружена новая проблема. Спасибо за ваш комментарий!   -  person mkmnstr    schedule 20.11.2016
comment
Концепция изначально неверна. Вам не нужно хранить дополнительные данные в dom, если у вас уже есть эти данные, доступные в контроллере.   -  person charlietfl    schedule 20.11.2016
comment
К сожалению, данные недоступны в контроллере из-за того, что они загружены в DOM, а не с использованием ng-repeat или ng-options.   -  person mkmnstr    schedule 20.11.2016
comment
Тогда вам нужно лучше объяснить генерацию исходного кода dom. Это очень отстало для углового приложения, где нормой является то, что данные определяют, что создается в доме, а не наоборот.   -  person charlietfl    schedule 20.11.2016
comment
Хорошо, параметры генерируются PHP-скриптом и не могут быть изменены путем получения из сервиса, меня попросили использовать код как есть. Так что мой единственный вариант - сделать это.   -  person mkmnstr    schedule 20.11.2016
comment
Затем я предлагаю вам вернуться к использованию исходных атрибутов данных и пользовательской директивы. Или передать данные в переменную javascript из php   -  person charlietfl    schedule 20.11.2016
comment
Да, я думаю, было бы лучше, если бы я просто добавил атрибут data-something и присвоил ему то, что мне нужно, из атрибута фактического значения. Итак, вывод, вы не можете использовать оба, верно?   -  person mkmnstr    schedule 20.11.2016
comment
нет... директива ng-value устанавливает значение, поэтому нет смысла использовать оба. Предыдущий ответ совершенно неверен   -  person charlietfl    schedule 20.11.2016
comment
Здесь мне нужны два значения: одно для изменения DOM, а второе для сохранения в базе данных.   -  person mkmnstr    schedule 20.11.2016
comment
Поэтому используйте пользовательскую директиву для анализа атрибута данных в обработчике изменений. Или настройте конечную точку API, чтобы получить необходимый набор данных.   -  person charlietfl    schedule 20.11.2016
comment
Не могли бы вы уточнить это? Я немного смущен. Спасибо за ваше время заранее.   -  person mkmnstr    schedule 20.11.2016
comment
Директива предоставляет элемент select... тогда это просто вопрос получения атрибута данных от выбранного дочернего элемента и обновления контроллера в функции ng-change внутри директивы. Или исправьте дизайн приложения и используйте angular для создания dom, поскольку он предназначен для использования вместо гибридного шаблона на стороне сервера/клиента.   -  person charlietfl    schedule 20.11.2016