【发布时间】:2016-03-24 03:16:11
【问题描述】:
我目前正在使用 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/
【问题讨论】:
标签: javascript angularjs http angularjs-scope