0
我有一個應用程序加載默認頁面,並且該默認頁面需要一些數據來呈現它自己。適當的策略來獲取初始數據AngularJS /指令
在頁面中,我有一個指令,用一些視圖元素包裝數據。我希望應用程序在指令「加載」時獲取數據,以便只要數據返回,指令就可以開始呈現數據的過程(例如,對於某些列表的ng-repeat等)。
什麼是最好的生命週期階段踢一個REST服務調用來獲取數據(編譯,鏈接,後鏈接)?
注意REST服務是在角度Service對象中聲明並注入到控制器中的。
例子:
<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的「resolve」或者直接綁定到promise。這將「啓動」請求。在你的控制器中,'$ scope.data = service.get();'就是這樣...不要反套! –