2016-10-04 4 views
0

私は皆が偉大なことを願っています。複数のビューが同じコントローラでバインドされていますか?ベストソリューション?

私は2つのビューを持つ1つのコントローラを持っています。私が望むのは、リストAから通知を削除すると、というモデルのリストBが更新されるはずです。

enter image description here 最高の&この問題の最適化されたソリューション?

1つの方法は、サービスを作成し、両方のコントローラでリストモデルを共有することです。しかし、他の最善の方法はありますか?

答えて

0

上記のようにサービスまたは工場を介してデータを共有してください。または、$rootScope.$broadcastイベントを使用して、コントローラのインスタンス間で通信することができます。

もう1つの方法は、親スコープ内に状態を持ち、その状態をコンポーネント/指令の属性を介して両方の子に渡すことです。例えば。

<my-first-directive shared-data="sharedData"></my-directive> 
<my-second-directive shared-data="sharedData"></my-directive> 

このようにして、受信ディレクティブ/コンポーネントをステートレスにすることができます。

0

1.リストビューにrootscope変数を共有できます。 RootScope変数や関数を使う

2.プロではありません、あなたは両方のビューのためのコントローラを使用することができます。

2つのビューのコードがそれほど多くない場合、両方のビューに1つのコントローラを使用できます。

+0

コントローラはシングルトンではなく、2つのインスタンスがお互いのスコープにアクセスすることができなくなりますように、URLとリストのデータで使用するリストデータを共有コントローラにすることができ

.when('/company/ticket/log/:company_id', { templateUrl: 'views/company/company_ticket_log.html?v=' + CONFIG.VER, data: { authorizedRoles: [USER_TYPES.LOGINUSER] } }); 

! – Amygdaloideum

+0

http://stackoverflow.com/questions/21919962/share-data-between-angularjs-controllers –

+0

はい、この例では、コントローラは同じコントローラの同じインスタンスを持つのではなく、ファクトリを介してデータを共有します。 – Amygdaloideum

0

他のコンポーネントに対して同じビューを2つ作成しないことをお勧めします。私にとっては、方位配線を使用する方がよいため、異なるルートで1つの状態を使用することができます。

$stateProvider.state("my_state", { 
     url: "/myView", 
     templateUrl: "/views/my-view.html", 
     controller: "MyCtrl" 
    }); 

P.S.この目的のために$rootScopeを使用しないでください。良い例ではありません!)

+0

コントローラのインスタンス間でデータモデルを共有する方法の例は示していません。 – Amygdaloideum

0

この方法を試してください。あなたはこれをしようとするとconst.js

関連する問題