3

これは実際には別のSOの質問から整理された問題です。

ここのjsFiddleの例http://jsfiddle.net/5WrcD/2/show/で、一方を変更するとselect、もう一方が同期された値を取得します。Firebugをオンにして、両方のselectメニューを展開してこれを試してください。

最初にページをロードし、最初の選択をに変更すると、両方20のオンがDOMになりますが、表示には表示されません。selected="selected"20

なぜこれが起こっているのかについて何か考えはありますか?

この例ではEmber.jsライブラリを使用していますが、とにかく表示はDOMの状態を反映しているはずです。

このバグはFirefoxでのみ発生します。これはFirefox固有の質問です。

4

3 に答える 3

2

FFではなくChrome/Safariで動作します。おそらく、これら2つのEmber.js警告は何かを意味します。

  1. 警告:計算されたプロパティは、デフォルトでまもなくキャッシュ可能になります。アプリでこれを有効にするには、を設定しENV.CP_DEFAULT_CACHEABLE = trueます。ember-0.9.8.1.js(65行目)

  2. 警告:{{view}}ヘルパーがテンプレートに影響を与える方法が変更されようとしています。以前は、子ビュー内のテンプレートは新しいビューをコンテキストとして使用していました。間もなく、ビューはテンプレートをレンダリングするときに親コンテキストを保持します。を設定することで、新しい動作に早期にオプトインできますENV.VIEW_PRESERVES_CONTEXT = true。詳細については、https://gist.github.com/2494968を参照してください。テンプレートはできるだけ早く更新する必要があります。このデフォルトはまもなく変更され、このオプションは1.0リリースの前に完全に削除されます。


アップデート#1:

(要素が作成された後)選択したものをすべてオフにすることも役立つようです。スクリプトの最後に添付します。

setTimeout( function (){ $('option').prop('selected',false); } , 100 );
// Anonymized as per Fabrício Matté's suggestion

注: 100ミリ秒後に自動的に実行する代わりに、実行できるコールバックがある場合があります。


アップデート#2:

また、オプションのプロパティを設定する代わりに、Ember作成のコンテンツを削除できるように見えます。

App.myController = Ember.Object.create({
   //content: 10    /* comment out, remove, or set to '' instead of 10 */
});

注:私はEmberを使用していないので、これが何かに影響するかどうかはわかりません

于 2012-09-01T00:50:19.153 に答える
2

valselect要素にを設定することで同様の問題を修正しました。

selectには2つのエントリがあり、2番目のエントリをプログラムでアクティブ化したいと思いました(jQuery)。これはselected属性を変更することで実行できますが、Firefox 17.0は選択を再描画せず、新しく選択されたを表示しませんでしたoption

<select id="yesno">
<option value="true" selected="selected">Yes</option>
<option value="false">No</option>
</select>

このjQuery-Snippetがトリックを実行しました。プログラムで変更すると、FF17.0で「いいえ」が選択されていることがわかります。

var yesnosel = $("#yesno");
yesnosel.val("false");
yesnosel.find("option").removeAttr("selected");
yesnosel.find("option[value='false']").attr("selected", "selected");

を設定するvalだけで十分かもしれませんが、更新も必要でしたselected option

于 2012-12-05T09:45:28.340 に答える
0

jQueryによる数行=)

http://jsfiddle.net/xXC9t/

于 2012-09-01T02:15:15.407 に答える