2013-11-22 11 views
5

はAngular.js' Controller docsとは全体つまずい読んでい:角型文書:コントローラ間でステートレス/ステートフルなコードをどうやって共有できますか?

コントローラ間でステートレスまたはステートフルのコードを共有する - 利用角度 サービスを代わりに。

しかし、これは不明です。コントローラ間でステートレス/ステートフルなコードをどのように共有できますか?あるいは、ここでの「コード」は何を意味していますか?モデル?その上、私が理解する限り、コントローラはお互いを参照しません。誰でも私のために物事をクリアすることができます(他の人)?ありがとう。

+0

ここをクリックhttp://stackoverflow.com/questions/13180293/angularjs-multiple-uses-of-controller-and-rootscope/13181133#13181133サービスを使用して状態を維持する方法(この場合はメニュー)を同じコントローラの複数のインスタンスに渡って(ただし、2つ以上の異なるコントローラにすることもできます)。 –

答えて

2

私は彼らが指していることは、データを「永続化」する方法、コントローラ間で共有する方法、またはルート変更間で共有する方法の1つかもしれないと思います。これを行う1つの方法は、rootScopeに入れる方法と、もう1つはサービスを使う方法です。あなたはこのようなサービスを定義する場合:

.factory("MyDataObject", function() { 
    return {}; 
}) 

を次にMyDataObjectはどこに機能し、あなたがデータを共有するために、それに物事を保存することができ、それを呼び出すと、コントローラ(またはディレクティブの間で述べ同じオブジェクトであるか、または他のサービスなど)。

あなたは角度のドキュメントを知っていることはありませんが、私はそれは、彼らが例えば参照

:)について話しているものですよねこの回答: Angularjs, passing scope between routes

+0

回答を受け入れていただきありがとうございます。それが最初に来たので。しかし、うん、実際には "コード"の共有の代わりに "データ"の共有を意味しているようだ。 –

2

ここでは、件名に私の見解です。角張った男がいつも説明しようとしたように、スコープはあなたのモデルではありません。角度のある「サービス」はそれを行う方法ですが、ワードサービスはそのような過負荷の言葉です。 DDDの背景から来て、私は状態やステートフルと単語サービスを調和させることはできませんが、それはちょうど私には意味がありません。 ViewModelやそれを呼びたいものが何であれ、より意味をなさされるものです。 MVVMパターンを使用してSilverlightで作業していたので、ViewModelと呼んでいます。ビューのスコープを提供する "コントローラ"の仕事であるので、私のコントローラはこれまで非常にリーンでした。バルクロジックは、コントローラが作成する$スコープを介してビューに関連付けられるViewModelsにあります。それは理にかなっていますか?だから、私のコントローラは、mySearchViewModelと言って、ロジックの大部分がそこにあり、コントローラ間で共有でき、mySearchControllerの$scope.vm = mySearchViewModelのようなビューを関連付けることができます。

+0

ありがとう、それは理にかなっています。しかし、私はコントローラーが自分自身にビューを割り当てなければならないということにはまったく同意しません。代わりにビューの義務だと思います。ビューは常にコントローラに関連付けられているため、コントローラでは動作しません。これはサポートされていません。同様に、ビューには1つのコントローラしか存在できませんが、コントローラは異なるビューを持つことができます。 –

+0

@マコフ:コントローラが自分自身にビューを割り当てるとは決して言いませんでした。コントローラはビ​​ューのスコープを提供します。また、私は離れて1つのコントローラから複数のビューに関連付けられて滞在します。 – epitka

+0

すみません、私はあなたを間違えました。しかし、それでも、複数のビューを持つコントローラを再利用することは非常に標準的です。それが最初の部分で切り離された理由です。 –

関連する問題