服务就是AngularJs框架中用于定义通用功能的地方。它在功能上相似于jQuery的extend,可是使用方法上彻底不一样。json
在app.run
中使用AngularJs提供的$location
服务。app
在app.run
中使用Angularjs提供的$http
服务。框架
使用app.server
或app.factory
向Angularjs注册服务,并在app.run
里经过依赖注入的方式使用它。搞清楚“服务的工厂函数”、“服务对象”和“依赖注入”之间的关系。函数
好比一个json对象 data.json {'message':'hello world'} var app = angular.modular('s.app',[]); app.run(function($http, $rootScope) { $http.get('data.json') .success(function(data) { console.log(data) }) .error(function(){ console.log(data); }) })
$http({ url: 'data.json', method: 'get', data: { id: 'box' } }).success(function(data){ console.log(data) }) .error(function(data){ console.log(data) })
两个参数,第一个参数是:服务的名字 第二个参数是:服务的构造器 app.service('DemoServive', function() { this.message = 'hello world' }) 在依赖注入的时候,输入服务的名字,就能拿到‘服务对象’,服务对象其实就是用咱们给的构造器建立出来的。 app.run(function(DemoService, $rootScope) { $rootScope.data = { message: DemoService.message } })
就是如同锚连接同样,只改变地址栏的变化,网页不刷新。this
var app = angular.module('s.app', []); app.run(function($location, $rootScope) { console.log($location.path()); //输出的就是地址栏#后边的东西 })
监听hash值的变化url
var app = angular.module('s.app', []); app.run(function($location, $rootScope) { $rootScope.location = $location; //在$rootScope上,执行location.path()求得一个值,当这个哈数求得的值变化时,就执行咱们的回调函数 $rootScope.$watch('location.path()',funcion(){ var hash = $location.path(); // 当hash发生改变时,更改存储下来的页面状态 switch(hash) { case '/a': data.state = 'a'; break; case '/b': data.state = 'b'; break; case '/c': data.state = 'c'; break; } switch(data.state){ case 'a': data.msg = 'a'; break; case 'b': data.msg = 'b'; break; case 'c': data.msg = 'c'; break; } }) })
步骤:code
第一个参数是:服务的名字 第二个参数是:服务的工厂函数 app.factory('DemoService', function() { //服务的工厂函数的返回值。才是服务对象 return { msg: 'this is factory' } })