2016-04-04 27 views
0

私はRactive.js v0.7.3を使用していますが、選択ボックスの選択を解除する必要がありますが、Ractiveのマニュアルでその方法を見つけることはできません。私の選択でRactive.jsを使用して、選択した選択ボックスをどのように非選択にしますか?

、最初のオプションは、(値を持たないと言い、「選択...」)は空であるので、私はそうのようにnullに値を設定してみました:

rjs.set('selected.' + cfg.nodeType + '.id', null); 

もがそれていることを確認実行して値を更新した前と後に、次の正しい前にidと後のヌルが、それでもUIで選択されたように表示前の値を返さ

var test = rjs.get('selected.' + cfg.nodeType + '.id'); 

私はjQueryのでは、以下を使用して終了:

function resetMenu(cfg) { 
    $('#' + cfg.nodeType + 'Select').attr('selectedIndex', -1) 
     .find('option:selected').prop('selected', false); 
} 

が、その後、私は新しいページに切り替え、RACTIVE「再選択」の元の選択。だから、私は、Ractiveが変更について知らなかったという次の考えを加えたが、Ractiveは以前の選択された価値を「再選択する」。

function resetMenu(cfg) { 
    $('#' + cfg.nodeType + 'Select').attr('selectedIndex', -1) 
     .find('option:selected').prop('selected', false); 

    if (rjs) { 
     rjs.update('navList.' + cfg.nodeType); 
    } 
} 

私はオプションの選択を解除するRACTIVEを使用することができれば、それは理想的であろうと考えていますが、私は選択オプションの選択を解除する方法をRactive.jsのドキュメントで見つけることができません。

+0

提供答えはあなたのために動作しない場合は、まさにあなたを明確にしてください提供されたデモを更新して、動作しないときを表示します。 –

答えて

1

更新:

はRACTIVEのバグが修正されました。エッジバージョン(v0.8.0)では、任意の値ractive.set()に変更できます。一致するオプションがない場合は、何も選択されません。

オリジナルの答え:

設定値と一致するオプションはありません場合は、RACTIVEは、最初のオプションを選択します。これは、選択が更新されるたびに発生します。私はそれがバグだと信じて、GitHubに問題を提出しました。

現在、最良のオプションは選択解除を処理するためにデコレータを作成している:

{{selected}}<br> 

<select value="{{selected}}" decorator="unselect: {{selected}}"> 
    <option>1</option> 
    <option>2</option> 
</select> 
var ractive = new Ractive({ 
    el: 'body', 
    template: '#template', 
    data: { selected: null }, 
    decorators: { 
    unselect: function (select, value) { 
     // use ractive.set('selected', null) in your code to unselect 
     if (value === null) { 
     select.selectedIndex = -1; 
     this.updateModel(); 
     } 

     return { 
     teardown: function() {} 
     } 
    } 
    } 
}); 

デモ:https://jsfiddle.net/xubo91oh/

+0

安定版のためにバージョン0.8はいつですか?ウェブサイトは現在、バージョン0.7.3 – TriumphST

+0

0.7.3を提供しています。最新の安定版です。終了したら0.8.0がリリースされます。私たちはETAを持っていない、私は恐れている。詳細はGitHubのプロジェクトを参照してください。その間に、私の答えで提供される回避策はうまくいくはずです - そうなら、これを受け入れられた答えとしてください。 –

関連する問題