問題タブ [presentation-model]
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.
c# - ベストプラクティス:ドメインモデルとプレゼンテーションモデル間のマッピングにAutoMapperまたはLINQ(LINQ to Objects)を使用する場合の長所と短所
どう思いますか?ドメインとプレゼンテーションモデルをどのようにマッピングしますか?
binding - JavaFX-バインディングボタンの無効状態に関する質問
タスクのリストを維持するダミーアプリケーションを作成しようとしています。
今のところ、私がやろうとしているのはリストに追加することだけです。テキストボックスにタスク名を入力し、[タスクの追加]ボタンをクリックすると、リストが新しいアイテムで更新され、タスク名の入力がクリアされることを期待しています。タスク名が空でない場合にのみタスクを追加できるようにしたい。以下のコードは私の実装ですが、バインディングに関して質問があります。
テキストボックスのテキスト変数をビューモデルの文字列にバインドし、ボタンの無効化変数をビューモデルのブール値にバインドしています。
タスク名が変更されたときに無効状態を更新するトリガーがあります。タスク名のバインドが発生すると、ブール値はそれに応じて更新されますが、ボタンは無効のまま表示されます。しかし、ボタンの上にマウスを置くと、ボタンが有効になります。これは、JavaFX 1.3のバインディングが怠惰であるためだと思います。バインドされた変数は、読み取られたときにのみ更新されます。
また、タスクを追加すると、モデル内のタスク名をクリアしますが、テキストボックスのテキストは変更されません-を使用している場合でもbind with inverse
。
テキストボックスのテキストとボタンの無効な状態を、予想どおりにバインディングを介して自動的に更新する方法はありますか?
ありがとう、
ジェームズ
AddTaskViewModel.fx:
Main.fx:
c# - MVP、WinForms - ビュー、プレゼンター、プレゼンテーション モデルの肥大化を回避する方法
Winforms に MVP パターンを実装するとき、プロパティ、セッター、およびゲッターが多すぎるビュー インターフェイスが肥大化していることがよくあります。簡単な例として、3 つのボタンと 7 つのテキスト ボックスを含むビューを使用します。これらはすべて、ビューから公開された値、有効、および可視のプロパティを持ちます。これに検証結果を追加すると、簡単に 40 のようなプロパティを持つインターフェイスになる可能性があります。プレゼンテーション モデルを使用すると、同じ数のプロパティを持つモデルも存在します。
すべての値をやり取りする肥大化したプレゼンター ロジックを使用せずに、ビューとプレゼンテーション モデルを簡単に同期するにはどうすればよいでしょうか? (その 80 行のプレゼンター コードで、モデルとビューをモックするプレゼンター テストを想像してみてください。その転送をモックするためだけに 160 行のコードが表示されます。) winforms のデータ バインディングに頼らずにこれを処理するフレームワークはありますか? (winforms ビューとは異なるビューを使用したい場合があります。一部の人によると、この同期はプレゼンターの仕事である必要があります..) AutoMapper を使用しますか?
間違った質問をしているのかもしれませんが、ここで良い解決策がないとMVPは簡単に肥大化してしまうようです..
apache-flex - モデル オブジェクトへのコールバック
Mate Frameworks LocalEventMap を介して、モデル オブジェクトへのコールバックを定義する方法を見つけようとしています。
イベントは、ビューを介して (モデルのディスパッチャー プロパティとして) モデルから最初にディスパッチされます。ただし、コールバックが起動する準備ができている場合、次のエラーが発生します。
method="model.rtGetHandleResult" を作成しようとすると、本質的に同じエラーが発生します
それで、プレゼンテーションモデルに合わせて...どうすればイベントマップにこれをモデルに渡させて実行させることができますか?
.net - MVP /プレゼンテーションモデルのUIパターンを正しく実装していますか?
Winformsアプリケーションを作り直していて、UIにプレゼンテーションモデルパターンのバリエーションを採用したいと思います。私が正しくやっているのなら、誰かが次の説明から教えてもらえますか?
次のように依存関係を設定することにしました。
あれは:
モデルはそれ自体以外は何も認識していません。
プレゼンテーションモデルにはモデルへの参照があります(ただし、その逆はありません)。
ビューにはプレゼンテーションモデルへの参照があります(ただし、その逆はありません)。
Winformsデータバインディングを使用して、ビューとプレゼンテーションモデルの同期を維持しています。
これで、フォームの[閉じる]ボタンをクリックするなどの処理が必要な場合を除いて、これはすべて魅力のように機能します。プレゼンテーションモデルにはビューへの参照がないため、ビューによって公開されたイベントをサブスクライブすることはできません。したがって、私は次の松葉杖を思いついた:
あれは:
ユーザーは「閉じる」ボタンをクリックします。
ボタンの
Click
イベントはビューにキャプチャされ、プロパティを設定することで反応しますCloseRequested
。データバインディングは、この値をプレゼンテーションモデルの対応するプロパティに転送します。
プレゼンテーションモデルは、プロパティを設定することでこの変更に対応します
IsClosed
。データバインディングは、この値をビューのに転送します
MustClose
。ビューは、それ自体を閉じることによってこの変更に反応します。
プレゼンテーションモデルはビューから非常にうまく分離されており、その逆も同様ですが、これは1つのボタンコマンドを処理するためだけの多くの作業です。私が決定した依存関係グラフを考えると、もっと簡単な方法はありますか?
winforms - データベースから直接プレゼンテーションモデルをロードする
WinFormsクライアントがデータベースを直接呼び出す2層アプリケーションに取り組んでいます。シナリオの1つでは、顧客エンティティのリストをユーザーに表示する必要があります。問題は、Customerエンティティに多くのプロパティ(かなり重いものもあります)が含まれていて、必要なのはそのうちの2つ(名前と名前)だけであるということです。したがって、パフォーマンスを向上させ、プレゼンテーションロジックをより明確にするために、必要なプロパティのみを使用してある種のCustomerSummaryViewModelクラスを作成し、NHibernateのプロジェクション機能を使用してロードします。ここでの私の懸念は、この場合、私のデータアクセスロジックがプレゼンテーションと結合し、概念的に間違っているように見えることです。
これは大丈夫だと思いますか、それとももっと良い解決策がありますか?
model-view-controller - Presenter、Presentation Model、ViewModel、Controllerの違いは何ですか?
私はこれらのパターンのそれぞれがどのように機能するかについてかなり良い考えを持っており、それらの間の小さな違いのいくつかを知っていますが、それらは本当に互いにまったく異なっていますか?
プレゼンター、プレゼンテーションモデル、ViewModel、コントローラーは基本的に同じ概念のようです。
これらの概念をすべてコントローラーとして分類できなかったのはなぜですか?アイデア全体が大幅に簡素化されるのではないかと思います。
誰かが彼らの違いを明確に説明できますか?
私はパターンがどのように機能するかを理解しており、それらのほとんどを何らかのテクノロジーに実装していることを明確にしたいと思います。私が本当に探しているのは、これらのパターンの1つを使った経験と、たとえばViewModelをコントローラーと見なさない理由です。
これについていくつかの評判ポイントを与えますが、私は本当に良い答えを探しています。
apache-flex - プレゼンテーションモデルを使用してFlexに要素を追加する
私は別の開発者によって書かれたいくつかのFlexコードをリファクタリングしており、ActionScriptをMXMLから分離したいので、PresentationModelアプローチを実装しています。私が見つけた問題の1つは、元のActionScriptコードがMXMLから要素を追加/削除することです。
ハンドラー関数がモデルをチェックし、値が正しい場合は、ビューから要素を作成または削除します。プレゼンテーションモデルをビューの広告要素に配置し、それでも私が目指しているこの緩い結合を維持するための最良の方法は何ですか。
プレゼンテーションモデルがディスパッチする単純なイベントと、追加する要素の詳細を渡すためのビューリストを使用することを考えていました。別の解決策はありますか?
ありがとう
スティーブン
swing - Clojure の derecord とプライベート フィールド
私は頻繁に、Martin Fowler のプレゼンテーション モデルパターンを使用して Java Swing GUI を実装しています。
次に例を示します。
その後、インターフェイスは、ビューでのすべてのアクションの処理を担当するプレゼンター クラスに渡すことができます。テスト用にモック バージョンをプレゼンターに渡すことができます。ビューは非常にシンプルなので、理論的にはユニット テストを行う必要はありません。
私はClojureで以下を使用して同様のことをしようとしていますdefrecord
:
インターフェイスと「クラス」を実行するために私ができる唯一の方法は、 and を使用することdefprotocol
ですdefrecord
。より良い方法はありますか?defrecord
コンポーネント (JButton、JLabel、JList) を含む「フィールド」を非公開にする方法はありますか? 実装の詳細を公開するのは嫌いです。
silverlight - WCF RIA が 4096 レコードで上限に達する
誰かがこの問題に遭遇したかどうか、またはなぜこれが起こっているのかを知りたいだけです.
私は本当に単純な mvvm テスト アプリケーションを実行しています。すべてが機能します。
唯一の問題は、4588 レコードの DB があり、それらをすべて取得しようとすると、ロード操作がうまくいかないことです。
.take(4095) に絞り込むと、これでうまくいきます。そのため、コンピューター サイエンスの Spidy Sense が鳴り始めました。私はこの番号を知っています。その後、4095 (コレクションは 0 ベースであるため、実際には 4096 レコード) が 8^4、つまり 32 ビットであることがわかりました。これはRIAに組み込まれた制限ですか? 32ビット?..またはコールを制限するために使用されたちょうど良い CS ラウンド数?
そこで、カスタム ドメイン サービスとプレゼンテーション モデルを使用して、別の方法で試してみることにしました。
奇妙なことは、4588 のレコードをすべて取得できたことです。
これにも問題がありました。たとえば、プレゼンテーション モデルから 12 個のプロパティしか吊るすことができませんでした。別のプロパティを追加すると、壊れました。しかし、4096 レコードの制限という元の問題は、PM には現れませんでした。
何か案は?
前もって感謝します!!!