为什么reset()函数与jsviews无法正常工作

时间:2014-01-17 12:36:22

标签: reset jsviews

我正在使用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

1 个答案:

答案 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)进行还原。