我正在使用jsviews进行数据绑定:
我的模板
<script id = "ProfileTemplate" type="text/x-jsrender">
<input data-link="userVO.first_name" type="text">
<input type="reset" value="Reset" onclick="this.form.reset();">
</script>
我的表格
<form name="profile-form" id="profile-form" action="profile.html">
<div id="flightEditDetail"></div>`enter code here`
</form>
<script>
var template = $.templates("#ProfileTemplate");
template.link("#flightEditDetail", profileJSON);
</script>
模板正确绑定值。我更改了文本字段中的值,然后单击了重置按钮。文本字段变空,但我想要在页面加载时呈现的值。
为什么reset()函数无法正常使用jsviews data-link
答案 0 :(得分:2)
reset()
将恢复value
媒体资源中设置的初始/默认值:<input value="initialValue" />
对于您的情况,您可以将“静态定义”值设置为初始数据值:
<input data-link="userVO.first_name" type="text" value="{{:userVO.first_name}}"/>
或更好 - 属性编码初始值以避免注入攻击:
<input data-link="userVO.first_name" type="text" value="{{attr:userVO.first_name}}"/>
结果是用户将看到原始值。但是,重置操作只会更改UI值,而不会更改要链接到的基础数据中的值。 (有关jQuery中的相关问题/关注,请参阅http://bugs.jquery.com/ticket/11043)。因此,最好不要使用reset(),而是克隆初始数据,并使用$.observable(userVO).setProperty(originalUserVO)
进行还原。