@Dartess

Как подружить AngularJS и кастомные инпуты?

Только начал разбираться в AngularJS, и спросить не у кого...

Пытаюсь использовать получение значения переменной из инпута (radio). Делается это легко - ng-model="realty". До тех пор, пока не навесить на этот инпут кастомный вид... Использую Jquery Form Styler. Получаю обёртку вида:

<div class="jq-radio">
<input type="radio" name="step-1" ng-model="realty" value="house">
<div class="jq-radio__div"></div>
</div>


И... тут ng-model перестает работать. Напрочь.

Окей, всей прелести ng-model я ещё не ощутил. И я решил попробовать заменить ng-model на
ng-click="realty = 'house'"

Ситуация аналогичная. Пока инпуты не стилизированы - работает. Со стайлером - не работает.

Окей, подумал я. А что, если динамически навешивать аналогичный ng-click всем родителям input type="radio"? Навесил. Фейл. Как я понимаю, навешенный после инициализации AngularJS ng-click работать уже не будет.

Дальше - хуже. Из консольки вычислил, что по .click() по самому инпуту срабатывает и переключение (визуальное) стилизованных дивов, и событие ng-click. Сдуру попробовал повесить обработчик click по jq-radio, "кликающий" на дочерний инпут. Получил рекурсию и крах браузера.

Помогите, пожалуйста, советом, что тут можно сделать? Отказаться от стилизованных интуптов не могу. Остается вариант опять отложить дальнейшее знакомство с Angular в дальний угол, но это будет личный фейл...
  • Вопрос задан
  • 489 просмотров
Решения вопроса 1
@lega
Можете попробовать Angular Light, вот пример только отображает элементы. А так если нужно получать значения.

Отнаследовал стандартный al-radio jsfiddle с двухсторонним связыванием для Jquery Form Styler.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
function MyCustomInputDirective () {
    return {
        require: 'ngModel',
        link: function (scope, el, attr, ngModelController) {
             // ... а тут происходит магия
        }
    };
}
Ответ написан
@ElianL
javascript-разработчик
Для того чтобы работать с любыми подобными плагинами jQuery вам необходима директива, которая возьмет на себя работe по синхронизации представления и модели
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы