AngularJS — привязка входных данных к нескольким элементам модели

#angularjs #angular-ngmodel

#angularjs #angular-ngmodel

Вопрос:

Позвольте мне сначала сказать, что я знаю, что то, о чем я прошу, не является желаемым шаблоном, это просто то, что мне нужно в качестве временного исправления.

Я хочу иметь возможность привязывать один элемент ввода к двум «местам» в модели. например

Предположим, у меня есть ввод для ввода имени пользователя, и я хочу, чтобы он заполнял 3 поля в модели: user , username и user_name .

Меня не волнует, что происходит в случаях столкновения … т.е. после назначения model.user='aaa'; and model.username=’bbb» любое согласованное поведение нормально для меня.

Самое простое, что я могу придумать, — это привязка к user пользователю, а затем просмотр пользователя и обновление имени пользователя и имя_пользователя.

может быть, я смогу создать директиву, которая будет копировать из ng-модели в ее собственные цели…

Есть ли какой-нибудь умный, простой и быстрый способ использовать ng-model для этого или любого другого трюка, который я могу / должен использовать?

ОБНОВЛЕНИЕ — Чтобы попытаться удовлетворить любопытство.

Мне это нужно для следующего сценария:

ПРИМЕЧАНИЕ: это то, что НЕ было разработано для angular, и я хочу перейти на angular, но не могу преобразовать все сразу.

Рассмотрим форму, которая имеет выбор для действия, а затем несколько входных данных для разных параметров разных действий, некоторые поля являются общими для более одного действия. Поля помечены классами, которые представляют действия, к которым они принадлежат, и jQuery используется для скрытия и отображения их на основе выбранного действия и для сбора значений из всех полей, которые принадлежат текущему действию, для их использования при необходимости выполнения действия.

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

Комментарии:

1. Я согласен, использовать $watch для этого сценария, вероятно, проще всего

2. Или используйте функцию на контроллере, чтобы быть onchange для ввода, и в функции вы присваиваете 3 переменные входному значению.

3. Мне интересно, почему вы хотите это сделать!

4. Мэтт, мне это нужно, потому что я хочу, чтобы один и тот же элемент управления формой участвовал в двух разных наборах данных. Я добавлю обновление с более подробным объяснением.

Ответ №1:

Я не совсем уверен, что понимаю, о чем вы спрашиваете. Ты это имеешь в виду?

    <input ng-model="user" ng-change="user_name=username=user" type="text" /><br/>
   User: {{user}}<br/>
   Username: {{username}}<br/>
   User_name: {{user_name}}
 

http://plnkr.co/edit/tpl:8rFfZljYNl3z1A4LKSL2?p=preview

Комментарии:

1. Мне очень нравится ваше решение. Я думаю, что это именно то, что я искал (хотя это было довольно давно).