2014-01-22 4 views
0

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

= f.hidden_field :taskable_id, value: @patient.id, 
'ng-model' => 'newTask.taskable_id' 

= f.hidden_field :taskable_type, value: @patient.class.to_s, 
'ng-model' => 'newTask.taskable_type' 

= f.hidden_field :creator_id, value: current_user.id, 
'ng-model' => 'newTask.creator_id' 

Проблема у меня в том, что (от того, что я читал), угловые игнорирует скрытые поля. Есть ли обходной путь для этого?

ответ

3

Вы не можете иметь двустороннюю привязку данных со скрытым полем (при этом ng-model не будет работать, и это не имеет большого смысла в общем случае).

Вы можете использовать «нормальные», односторонний связывание с использованием интерполяции в атрибуте скрытых полей ввода в value:

<input type="hidden" name="hiddenField" value="{{hiddenValue}}" /> 

Смотрите эти GitHub issue для получения дополнительной информации.


В вашем случае (если вы хотите инициализировать hiddenValue до некоторого значения), вы можете использовать ng-init. Например. установите значение поля taskable_id в "{{newTask.taskable_id}}", опустите атрибут ng-model (так как он не будет иметь никакого эффекта) и установите для атрибута ng-init значение "newTask.taskable_id = " + @patient.id (извините, я не уверен в синтаксисе Rails).

Конечный результат должен выглядеть следующим образом:

<input type="hidden" ... value="{{newTask.taskable_id}}" 
     ng-init="newTask.taskable_id = <someID>" /> 

Это будет инициализировать newTask.taskable_id для <someID> и установить значение скрытого поля к нему.
См. Также этот short demo (относительно конечный результат).

+0

Я также использовал этот подход. Используйте привязку угловых js и обновляйте данные из контроллера/области. – joy

0

Это не AngularJs способ, как я думаю. Я бы предоставил какой-то REST API в рельсах для углового.

Вы можете объявить о своем сервисе и использовать $http для использования ваших данных с рельсов.

Смежные вопросы