通过隐藏字段传递值

时间:2014-01-22 06:16:56

标签: ruby-on-rails angularjs

我有一个使用rails和angular的表单。有隐藏的输入,其中值使用rails设置,我希望它们绑定并发送到angular:

= 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'

我遇到的问题是(从我读过的),角度忽略隐藏的字段。有解决方法吗?

2 个答案:

答案 0 :(得分: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 (关于最终结果)。

答案 1 :(得分:0)

我认为这不是AngularJs的方式。我会在rails中为angular提供某种REST API。

您可以声明您的服务并使用$http来使用rails中的数据。