我目前使用的是Angular 1.3.14,並且我想在每次單擊鏈接時使用$ http發出請求。我試圖將$ http請求放入一個服務中,以便它不綁定到任何一個控制器,並且可以被多個控制器訪問。我創建了兩個函數sayHello()和getData()。點擊時我希望每個人都使用console.log。只有sayHello()函數,但不是getData()函數。這是我不明白的地方。
爲什麼$ http請求觸發加載,而不是點擊而sayHello函數完美工作?
我該如何修改我的代碼以便按預期工作?
<p><a href="#" ng-click="getData()">Console Log Our Data</a></p> <p> <a href="#" ng-click="sayHello()">Console Log The Word "Hello"</a></p>
var app = angular.module('myApp', []) .controller('mainCtrl', function($scope, dataService){ $scope.sayHello = dataService.sayHello; $scope.getData = dataService.getData(function(response){ $scope.myData = response.data; console.log($scope.myData); }); }) .service('dataService', function($http){ this.getData = function(callback){ $http.get('http://jsonplaceholder.typicode.com/posts') .then(callback); } this.sayHello = function(){ console.log("Hello!"); } });
Codepen參考http://codepen.io/benweiser/pen/remvvo/
這與Maurcio的方法相反的優點還是缺點? –
OP示例中的'this.getData'返回undefined,不是承諾 –