某些自定义控件需要增加 input[type=hidden] 用于存储控件的值
huacnlee opened this issue · 3 comments
huacnlee commented
比如: starrating 和 switcher
这两个是非标准控件
,这类控件在用于传统 Form 提交的场景会非常不变,因为没有一个标准的控件用于接受它的最终值,而是的使用的时候不得不用 JS 去获取这个非标准控件
的值。这样给后端开发者带来一些不便。
但是............
假如我们可以再这些“非标准”控件里面植入 <input type="hidden" name="foobar" />
这么一个隐藏的文本框,在非标准控件
change 的时候将结果放入此文本框里面,那么后端开发者就可以直接在 Form 提交以后,在服务器通过 foobar
这个参数获取到这个控件的最终值 (当然 foobar 可以由组件使用者来自由定义),而无需在 Form 提交前再单独调用 JS 获取结果。
以 switcher 为例:
<form action="/articles" method="GET">
<div bx-name="switcher">
<input type="hidden" name="publish" value="true" />
<label>公开</label>
<div id="bx_switcher_post_publish" bx-name="switcher" bx-tmpl="switcher" class="switcher switcher-on">
<span class="switcher-trigger"></span>
</div>
<label>不公开</label>
</div>
</form>
仅仅需要在 switcher 切换的时候改变上面那个文本框的值就可以了。
在后端代码的时候就只需要获取 publish 这个参数的值就可以拿到选择的结果的。
再到回来看,关于给“非标准控件”值修改
对于“非标准控件”赋值这个动作我们也应该支持通过修改这个文本框的内容而改变“非标准控件”的展示效果。
huacnlee commented
BTW. 目前 Dropdown 就是以这种方式来实现的
cyjake commented
keyapril commented
其他组件看需要再添加。