我有一个应用程序加载一个默认页面,该默认页面需要一些数据来呈现自己。
在页面中,我有一个指令用一些视图元素包装数据。我希望应用程序在指令“加载”时获取数据,这样一旦数据被返回,指令就可以开始呈现数据的过程(例如某些列表的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;
答案 0 :(得分:1)
我更喜欢在指令本身上使用隔离范围并在MainCtrl
控制器中使用解析。
如果您最终只有$scope.data
为什么......只需在$scope.data = InjectedService.get();
中MainCtrl
进行操作即可。
只要注入的服务返回$ q承诺,那么它将全部是自动的。您不需要编写的大部分代码。
换句话说,让控制器获取数据。你的指令不需要担心它。