ExpandableSearchComponent.html:Dojo _hasDropDown - プロパティを宣言的にバインドするにはどうすればいいですか?
<div class="${baseClass}">
<div data-dojo-type="dijit/_HasDropDown" data-dojo-props="dropDown: 'containerNode'">
<div data-dojo-type="dijit/form/TextBox"
name="${SearchViewFieldName}Textbox"
class="${baseClass}Textbox"
data-dojo-props="placeholder:'${fieldName}'"></div>
<div class="${baseClass}Container" data-dojo-attach-point="containerNode"></div>
</div>
</div>
ExpandableSearchComponent.js:このように使用するためのもの
/**
* Javascript for ExpandableSearchComponent
*/
define([ "dojo/_base/declare", "dijit/_WidgetBase", "dijit/_TemplatedMixin",
"dojo/text!./templates/ExpandableSearchComponent.html",
"dijit/form/TextBox", "dijit/_HasDropDown" ], function(declare,
_WidgetBase, _TemplatedMixin, template, TextBox) {
return declare([ _WidgetBase, _TemplatedMixin ], {
templateString : template,
SearchViewFieldName : "",
fieldName : ""
});
});
:
<div data-dojo-type="js/widgets/ExpandableSearchComponent"
data-dojo-props="SearchViewFieldName: 'machineSearchView.name', fieldName: 'Name:'">
<div data-dojo-type="dojo/store/Memory"
data-dojo-id="machineNameStore"
data-dojo-props="<s:property value='%{getNameJsonString()}'/>"></div>
<s:set name="MachineName" value="machineSearchView.name"
scope="request"></s:set>
<div data-dojo-type="dijit/form/ComboBox"
data-dojo-props="store:machineNameStore, searchAttr:'name', value:'${MachineName}'"
name="machineSearchView.name" id="machineSearchView.name"></div>
</div>
意図がある:
- のTh eユーザは最初にテキストボックスをプレースホルダで見るだけです。
- クリックすると、containerNodeが展開され、containerNodeの内容が表示されます。
dijit/Select
、dijit/form/ComboBox
またはdijit/form/FilteringSelect
のいずれかです。内部要素も自動的に展開されます。 - ユーザは、内部選択の値を選択します。これは、少し変更されてTextBoxに
${fieldName}:${value}
として表示されます。
最終的にサーバーによって処理されるデータは、内部要素の値です。
私が現在直面している問題は、上記のように_HasDropDownを正しく動作させる方法がわかりません。 TextBoxを高さが0の要素としてレンダリングし、すぐに内部要素を表示します。ドロップダウンがうまくいくように内部ノードをバインドする方法がわかりません。
それはリンクが壊れます場合の基準としてここにあるので、あなたは、例えば、エン提供することはできますか? –
これを宣言的に行うことはできません。プログラムでプロパティを定義する必要がありますか? – Nzall