У меня приложение загружает страницу по умолчанию, и на этой странице по умолчанию требуются некоторые данные для рендеринга.Правильная стратегия для извлечения исходных данных AngularJS/Directive
На странице у меня есть директива, которая обертывает данные с помощью некоторых элементов представления. Я хочу, чтобы приложение извлекало данные, когда директива «загружается», так что, как только данные будут возвращены, директива может начать процесс представления данных (например, ng-repeat для некоторых списков и т. Д.).
Какова наилучшая фаза жизненного цикла для вызова службы REST для получения данных (компиляция, ссылка, пост-связь)?
Обратите внимание, что служба REST объявляется в угловом сервисном объекте и вводится в контроллер.
Пример:
<div ng-controller="MainCtrl">
<div my-directive data="{{data}}>
</div>
angular.module('angularTestApp')
.directive('myDirective', function() {
return {
templateUrl: 'route/to/my/view/template.html',
restrict: 'AE',
compile: function(tElement, tAttrs, transclude) {
//fetch data here?
scope.getMyData(); //calls REST service and sets value in the controller and set value for binding
}
link: function postLink(scope, element, attrs) {
scope.doSomething = function() {
console.log('I\'m doing something useful');
}
//does call to controller to fetch data go here?
scope.getMyData(); //calls REST service and set value in the controller for binding
}
};
});
Контроллер:
angular.module('angularTestApp')
.controller('MainCtrl', ['$scope', 'InjectedService', function ($scope, InjectedService) {
$scope.data = {};
$scope.getData = function() {
InectedService.get(function(data) {
$scope.data = data;
Что вы рекомендуете делать, чтобы «начать» вызов службы? – binarygiant
Используйте «решение» ng-route или просто привяжите непосредственно к обещанию. Это «начнет» запрос. В вашем контроллере '$ scope.data = service.get();' вот и все ... не переусердствуйте! –