Ember框架下隐藏类型字段移除及值隐藏问题求助
嘿,我明白你的困扰了——现在你只是把Input改成了hidden类型,但它还留在DOM里,表单提交时自然会把值发出去。要彻底解决这个问题,咱们得完全不渲染这个Input字段,而不是仅仅隐藏它。
下面结合你的代码给你具体的修改方案:
1. 用模板条件判断控制渲染
你的当前模板是循环渲染所有值对应的Input,咱们加个判断,当控件类型切换为hidden的时候,就不渲染这些Input。假设你有个属性(比如model.controlType)来标识当前控件类型,或者直接用一个isHidden布尔值,修改模板如下:
{{#each value in view.model.values}} {{#unless view.model.isHidden}} {{view view.field name=view.model.name value=value}} {{/unless}} {{/each}}
这样当切换到hidden模式时,这段循环里的Input就不会被渲染出来,DOM里自然找不到它,表单提交时也不会带这个参数了。
2. 额外提示:避免无效的hidden Input
之前你把TextField的type设为hidden,这其实只是让元素不可见,但它依然是表单的一部分。Ember表单会自动收集所有带name属性的Input值,所以即使是hidden的也会被提交。咱们的核心思路就是不渲染这个元素,从根源上解决问题。
3. 验证修改效果
改完之后你可以测试一下:
- 切换到hidden类型,打开F12看DOM,那个带
type="hidden"的Input应该消失了 - 提交表单,看网络请求的Form Data里,再也找不到
non-hidden(你的字段名)那一项了
作为Ember新手,慢慢熟悉模板的条件渲染会帮你解决很多这类视图控制的问题哦~
内容的提问来源于stack exchange,提问作者Aakash Kumar
相关产品推荐
相关产品推荐

