問題タブ [2-way-object-databinding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1008 参照

c# - バインドされたオブジェクトの代わりに DataGrid から値を取得するコンバーター?

アプリケーションでさまざまな測定値を表示するために、データ オブジェクトにバインドされた DataGridTextColumn を利用しています。測定値をさまざまな単位で表示できる機能を実装しようとしていますが、バインディングのコンバーターが最適なオプションであると考えました。

これはほとんどのアプリケーションでうまく機能しますが、ユーザーがフィールドの値を編集できる DataGrid に別のフィールドがあります。この場合、ユーザーから入力された値 (たとえば華氏) をデータ オブジェクトの既定の単位 (摂氏) に変換する双方向のデータ バインディングがあります。

Converter がデータ オブジェクトからセルシウスの値を取得し、変換を行ってから、この値 (華氏) を DataGridTextColumn に送信することを期待します。ただし、データ オブジェクトに値を設定し、PropertyChanged を通知した後、そのプロパティの「get」メソッドは呼び出されません。代わりに、Convert はユーザーが入力した値 (華氏) を DataGridTextColumn から取得しているようです。

これは通常の動作ですか?もしそうなら、Convert が常にその値をデータ オブジェクトに戻すように強制する方法はありますか?

役立ついくつかのスニペット:

コンバーターの方法:

ConvertBack で利用できる情報が限られているため、セッターで「ConvertBack」変換を行います。

編集:これは、問題を示すサンプル プロジェクトへのリンクです。左の列はユーザ​​ーが編集可能で、ユーザーが表示/編集したデータを表します。右側の列には、ユーザーが変更を加えたときに実際に保存される基礎となる値が表示されます (この値は決して変更されません)。

左の列の値を変更し、同じ行の別の列を [Tab] キーで移動するか選択すると、入力した値から値が変更されていることがわかります。ただし、行がフォーカスを失うと元に戻ります。ブレークポイントを設定すると、セル自体がフォーカスを失ったときに、DependencyProperty.UnsetValue を使用して Convert メソッドが呼び出され、次に Unit の get メソッドが呼び出され、続いて DataGrid の値を使用して Convert メソッドが再度呼び出されることがわかります。

TempConverter.zip

0 投票する
1 に答える
270 参照

c# - データバインディングを使用して、Datgrid で選択した行からアイテムを取得する

Datagridaを介して aにバインドされたリストがBindinglistあります。完全な 2 方向のデータバインディングが必要です

Itemグリッド内の行がわかっている場合、にアクセスする方法がわかりません。

たとえば、編集後にアイテムを検証したいのですが、編集されたアイテムへの参照を取得した場合にのみそれを行うことができます。

または、グリッド内の関連する行がわかっている場合、リスト内のアイテムを取得するにはどうすればよいですか。

ご助力ありがとうございます

0 投票する
2 に答える
902 参照

backbone.js - BackboneJS+UnderscoreJS el をモデルにバインドする方法

backbone.js + underscore.js 初心者です。ここにすでに回答がある場合は申し訳ありません。多分私は正しい質問を持っていません。

私は単純なテンプレートを持っています:

そして次のビュー:

そしてモデル:

render を実行した後はすべて正常に動作しますが、フォーム内のデータの編集を開始した後 (チェックボックスの状態を変更するなど)、View 内のモデルが変更されません。正しい方法で変更する方法。

ビュー内のすべての入力変更にイベントを追加し、モデル全体のすべての属性の値を手動で変更できることを知っています。この場合のベストプラクティスは何ですか?

事前にどうもありがとう!

0 投票する
1 に答える
341 参照

actionscript-3 - 双方向のデータ バインディングの問題

これが私のコンポーネントのコードです:

Boxクラスには と の 2 つの継承者がTextBoxありImageBoxます。これらのクラスはすべて[Bindable]. 他のコンポーネントでは、Boxオブジェクトを選択し、このイベントについて上記のコンポーネントに通知しEventBusます。また、選択したオブジェクトを渡すためにも使用しBoxます。各TextBoxオブジェクトにはArrayCollection、使用可能なフォント サイズ (フォント) と選択されたサイズがあります。DropDownListこれらの値に 2 つの方法でバインドします。そのDropDownListため、現在選択されているボックスのフォント サイズ (フォント) が常に表示され、ユーザーがリストから別の値を選択すると、現在のTextBoxオブジェクトに設定されます。

初めて TextBox オブジェクトを選択するとすべて正常に動作しますが、別のオブジェクトを選択するとエラーが発生します。

RangeError: プロパティ fontSize 値 0 が flashx.textLayout.property::Property$/defaultErrorHandler()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\ の範囲外ですプロパティ\Property.as:31] で flashx.textLayout.property::Property/setHelper()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\property\Property .as:230] flashx.textLayout.formats::TextLayoutFormat/setStyleByProperty()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\formats\TextLayoutFormat.as: 628] flashx.textLayout.formats::TextLayoutFormat/set fontSize()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\formats\TextLayoutFormat.as:1044] でspark.core::CSSTextLayoutFormat()[E:\dev\4.y\frameworks\projects\spark\src\spark\core\CSSTextLayoutFormat.as:75] spark.components::RichEditableText/updateStylesIfChanged()[E:\dev\4.y\frameworks\projects\spark\src\spark で\components\RichEditableText.as:3649] で spark.components::RichEditableText/commitProperties()[E:\dev\4.y\frameworks\projects\spark\src\spark\components\RichEditableText.as:2509] で mx .core::UIComponent/validateProperties()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:8219] mx.managers::LayoutManager/validateProperties()[E :\dev\4.y\frameworks\projects\framework\src\mx\managers\LayoutManager.as:597] mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.y\frameworks\projects で\framework\src\mx\managers\LayoutManager.as:813] at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1180]

どういうわけかselectedValueのプロパティDropDownListが 0 になります。何が間違っていますか?