バックボーンMarionetteで親子関係のルーターを正しく構成する

StackOverflow https://stackoverflow.com/questions/9399602

  •  29-10-2019
  •  | 
  •  

質問

ユーザーが編集を追加して親子を組み合わせて表示できるページを作成しようとしています。

UIには3つの列があります 親:親のリスト子:子

ユーザーが元の場所に戻ることができるようにコントローラーを構成したいのですが、親と子の両方を編集できるようにする必要はありません。

//バックボーンマリオネットを使用して近づいていますが、まだいくつかの小さな問題があります ジェネラコディセタグプレ

「this.ViewClient」を使用すると、ハッキーな感じがし、機能しません。

役に立ちましたか?

解決

マルチパートの回答、ここに...

「this.ViewClientは関数ではありません」

これはマリオネットのバグです。コントローラメソッドは、コントローラではなくルータのコンテキストで呼び出されるため、this.ViewClientの呼び出しは、ルータ上でそれを見つけようとします。

おっと。

バグが記録されました。できるだけ早く修正します。 https://github.com/derickbailey/backbone.marionette/issues/38

-

更新:このバグはBackbone.Marionette のv0.5.1で修正されました。 https://github.com/derickbailey/backbone.marionette

-

今のところこの問題を回避するには、次のようにします。 ジェネラコディセタグプレ

それが機能しない場合は、Underscore.jsのbindまたはbindAllメソッドを使用して、コントローラー関数が正しくバインドされるようにする必要があります。

バグが修正されたら、これらの回避策は必要ありません...できれば今日/今夜遅くに。

基本的に、他のルートを複数のリージョンを操作するための最良の方法と呼んでいますか?

この質問に対する直接の答えはノーです。

ただし、この場合はルートを呼び出していません。コントローラのメソッドを呼び出しています。それはまったく問題ありません-そして実際、私はこれを奨励します。これはオブジェクトの適切な使用法であり、別のルート/ルーターハンドラーを呼び出す代わりに実行する必要があると私が考えることの1つです。

ルーターとコントローラー

ルーターは機能であり、アーキテクチャ上の要件ではありません。アプリはルーターなしで動作する必要があり、ルーターはブックマークとブラウザの進む/戻るボタンを使用する機能のみを追加する必要があります。

その哲学(私は物議を醸していると私は知っています)を念頭に置いて、あなたが持っているようなコントローラーを使用し、アプリケーションを正しい状態にするためにコントローラーで複数のメソッドを呼び出すことは、取るべき正しいアプローチの1つです。

このように見てください。アプリからルーターを削除すると、コントローラーのメソッドを直接呼び出す必要があります。コードの重複を防ぐために、コントローラー上に1つのことを非常にうまく実行できる多くの小さなメソッドを作成し、それらの小さなメソッドから大きなメソッドを作成する必要があります。

お役に立てば幸いです。 :)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top