我有一个使用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'
我遇到的问题是(从我读过的),角度忽略隐藏的字段。有解决方法吗?
答案 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中的数据。