2014-01-17 55 views
0

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

模板綁定值正確。我更改了文本字段中的值並單擊了重置按鈕。文本字段變空,但我想要在頁面加載時呈現的值。

爲什麼復位()函數不jsviews數據鏈路正常工作

+0

歡迎來到StackOverflow。我已經重新格式化了您的問題,以便正確製作模板和表單格式。查看http://stackoverflow.com/editing-help瞭解如何格式化問題的詳細信息。 –

回答

2

reset()將恢復在value屬性設置的INTIAL /默認值:<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)來恢復。

相關問題