そのため、knockoutjs (v 3.2.0) と fancyforms (v 1.4.2) を Web アプリケーションで一緒に使用すると、次の問題が発見されました。
HTMLページに2つのselect
ボックス(以降「ドロップダウン」と呼びます)と2つのリンクがあります。
望ましい動作は次のとおりです (短い疑似コードです。jsfiddle-scenarios については以下を参照してください)。
if(dropdown1.value == "a1"){
dropdown2.value = "b3";
dropdown2.hide()
chosenlinkbutton = chosenlinkbutton1;
chosenlinkbutton2.hide(); //realized via knockoutjs-visiblebinding and a param
} else {
//show and reset stuff...
}
問題は、2 番目のドロップダウンが非表示にならないことです。代わりに、別のドロップダウンが表示されます。この問題を調査したところ、fancyform が実際の selectbox を ul/li-list 構造に変換するためであることがわかりました。しかし、正直に言うと、fancyform の生成されたコードにバインディングを (再) 適用する方法や、値を変更した後に fancyform を再インスタンス化する方法についての手がかりがありません。
問題を示す JSFiddle。「weekView」を「monthView」に変更して、他のドロップダウンが消えないことを確認してください: http://jsfiddle.net/fnmav1e8/8/
そして、コメントアウトされたファンシーフォームを持つ動作中の JSFiddle : http://jsfiddle.net/fnmav1e8/7/
このバージョンでは、実際には行をコメントアウトしただけです
$("select").transformSelect();
しかし残念なことに、fancyform で動作するアプリが必要です。
よろしく、 ドミニク