「todo_form」というテンプレートにこれがありました:
<input type="hidden" id="priority" value="{{todo.priority}}">
次に、フォームに「レンダリングされた」コールバックを設定して、その非表示の入力から値を読み取り、jQuery UI スライダーを設定しました。フォームは、リストから todo をクリックすることによって取り込まれました (登録されたセッション変数「active_todo」を介して)。
したがって、優先度 10 の todo をクリックしてから、同じ優先度の他の todo をクリックすると、$('#priority').val()
空白が返されます... 優先度が異なる todo をクリックする限り、問題なく機能しました。コンソールを使用してこれを確認しました - このフィールドは空白に設定されています!
私の解決策は、代わりに登録された「active_todo」をチェックして優先度を引き出すことでしたが、非表示の入力も更新する必要がありました: $("#priority").val(active_todo.priority)
.
誰かアイデアはありますか?元の (動作していない) レンダリングされたコールバックは次のとおりです。
Template.todo_form.rendered = ->
priority = $( "#priority" ).val();
$( "#priority-slider" ).slider(
range: "min"
value: priority
min: 1
max: 10
orientation: 'vertical'
slide: ( event, ui ) ->
$( "#priority" ).val( ui.value)
)
そして、これが私がそれを「修正」した方法です:
Template.todo_form.rendered = ->
active_todo = Session.get('active_todo');
$("#priority-slider" ).slider(
range: "min"
value: active_todo.priority
min: 1
max: 10
orientation: 'vertical'
slide: ( event, ui ) ->
$("#priority").val( ui.value)
)
$("#priority").val(active_todo.priority) # SHOULDN'T HAVE TO DO THIS!!!