Jestem nowy w Angular, więc mam nadzieję, że wiem wystarczająco dużo, aby zadać pytanie, co wydaje się rozsądnym pytaniem projektowym.Wzorzec Active Record lub Mapper danych dla Angularjs?
Mam wykres niektórych danych za pośrednictwem Angular i używam $ zasób. Przed wprowadzeniem Angular do projektu stworzyłem funkcję fabryki wykresów do tworzenia obiektów wykresów z przykładowych danych jsonów, które właśnie wkleiłem do widoku.
Teraz używam kątowe, aż korci, żeby umieścić funkcje wykresów w „Chart” zasobu, aktywny styl Record, tak, że mam tę jedną rzecz, która może pobierać, zapisywać, aktualizacji, itp
Chociaż zaletą tego wzoru jest prostota, wadą jest powiązanie trwałości z zachowaniem. Na przykład byłoby niezręcznie, gdybym chciał zapisać ustawienia wykresu w pamięci lokalnej.
Po tym, jak byłem już ugryziony przez AR wystarczająco dużo razy w mojej karierze, chcę iść z DM przez pozostawienie mojego obiektu wykresu tak jak jest i posiadanie kontrolera przekazuje dane z zasobu do mojego wykresu.
Jednak! Moje niewyraźne zrozumienie zastrzyku zależności angularjs sugeruje, że mogę być w stanie stworzyć zasób lub takie, które mogłyby przyjąć wspólny interfejs trwałości - czy właściwe słowo to "zakres"? Strategia
Przykład 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() })
})
}
])
Przykład strategia 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
}
}
])
myślę, że istnieje trzecia droga, chociaż, że nie widzę, bo nie dość grok jak wykorzystać DI.
Innymi słowy, jaki jest sposób AngularJS na stworzenie obiektu z wymienialnymi strategiami trwałości?
ten powinien być bardziej widoczny, ponieważ jest częstym problemem przy projektowaniu aplikacji angularjs poważne. – Danita
Zastanawiam się, czy ChartResource będzie zależało od wykresu i doda wywołanie zwrotne do wywołania, które odebrałoby odebrane dane i spowodowałoby powstanie nowej instancji Chart.W ten sposób kontroler może wywołać ChartResource lub LocalStorageChart (lub usługę, która wywołuje LocalStorageChart i używa ChartResource jako awarię \, gdy czas upłynie, aby unieważnić). Co myślisz? – haimlit