私は Angular に非常に慣れていないので、合理的な設計上の質問と思われるものを尋ねるのに十分な知識があることを願っています。
Angular を介していくつかのデータをグラフ化し、$resource を使用しています。Angular をプロジェクトに導入する前に、ビューに貼り付けたばかりのサンプル json データからチャート オブジェクトを作成するためのチャート ファクトリ関数を作成しました。
Angular を使用するようになったので、グラフ機能を「Chart」リソースの Active Record スタイルに配置して、描画、保存、更新などを行うことができるようにしたいと思います。
このパターンの利点はシンプルであることですが、欠点は永続性と動作の結合です。たとえば、グラフの設定をローカル ストレージに保存したい場合、かなり面倒です。
キャリアの中で AR に何度も悩まされてきたので、チャート オブジェクトをそのままにして、コントローラーがリソースからチャートにデータを渡すようにすることで、DM を使用したいと考えています。
でも!angularjs の依存性注入についての漠然とした理解は、共通の永続化インターフェイスを受け入れることができるリソースまたはそのようなものを作成できる可能性があることを示唆しています-正しい言葉は「スコープ」ですか?
AR 戦略の例:
App.factory('Chart', [
'$resource', function($resource) {
var chart = $resource('/api/charts/:id', {
id: '@id'
});
chart.draw = function() { ... }
return chart
}
]);
App.controller('ChartsCtrl', [
'$scope', 'Chart', function($scope, Chart) {
$scope.charts = Chart.query(function() {
$.each($scope.charts, function(i, c) { c.draw() })
})
}
])
DM 戦略の例:
App.chart = function(resource) {
return { draw: function() { ... } }
}
App.factory('ChartResource', [
'$resource', function($resource) {
return $resource('/api/charts/:id', {
id: '@id'
})
}
])
App.controller('ChartsCtrl', [
'$scope', 'ChartResource', function($scope, ChartResource) {
$scope.charts = $.map(ChartResource.query(), function(i, resource) {
chart = App.chart(resource)
chart.draw()
return chart
}
}
])
しかし、私は DI を活用する方法をよく理解していないため、私にはわからない 3 つ目の方法があると思います。
言い換えれば、交換可能な永続化戦略を使用してオブジェクトを作成する AngularJS の方法は何ですか?