0

私たちは、大きな角度のアプリケーションになるものを構築しています。私たちはすでにディレクティブやサービスを多用しており、14ものコントローラーを持っています。

私たちの問題は、コントローラー間でデータを共有することです。遠くにある(兄弟ではない)コントローラー間でデータを共有できるようにし、双方向のバインディングを壊さないようにしたいと考えています。

私は、データを運ぶための専用サービスを使用することを提案しました。

var MyApp = angular.module('MyApp', []);

MyApp.factory('dataContainer', function(){ return {} });
function FirstCtrl($scope, dataContainer) {
    $scope.data = dataContainer;

}

function SecondCtrl($scope, dataContainer) {
    $scope.data = dataContainer;
}

フィドルhttp://jsfiddle.net/didier_/R2Bgs/2/で試すことができます。

それは良い習慣ですか?

4

1 に答える 1

2

そのためにサービスを使用することは絶対に良い考えです。サービスなどのオブジェクトについて考える必要はありません。これは、Angular プロジェクトのデフォルトの命名にすぎません。アプリケーションが成長すると、さまざまなタイプのオブジェクト (この例のような状態オブジェクト、リソース オブジェクト、ヘルパー オブジェクトなど) のファクトリになる可能性があり、「サービス」という名前は少しあいまいになります。

ただし、生の状態オブジェクトをそのように渡すことには注意が必要です。おそらく、メソッド/ゲッターとセッターでアクセスをラップして、アプリケーションのさまざまな部分が他の状態を上書きしないようにする必要があります。これは、デバッグが少し面倒になる可能性があります。

于 2013-03-07T12:47:54.917 に答える