文章目录

​​

代码

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8">
<title>service服务</title>
<style>
*{margin: 0;padding: 0;}
main{margin:100px auto;width:300px;background-color:#ccc;color:white;text-align:center;padding:30px;}
</style>
</head>
<body>

<main ng-controller="MainCtrl as mainCtrl">
<h3 >{{mainCtrl.get()}}</h3>
<input type="search" placeholder="请输入姓名" ng-model="mainCtrl.nickname">
<button ng-click="mainCtrl.set();" >改名</button>

</main>

<script type="text/javascript" src="js/lib/angular/angular.min.js"></script>
<script type="text/javascript">

//Angular中使用service函数可以定义一个服务,本质就是一个普通函数,
//这个函数是一个类,在使用的时候会被系统自动的实例化1次,必须直接用类名打点调用里面的方法。
//服务是惰性的:只有当依赖这个服务的控制器被实例化的时候,服务才会被实例化。
//服务是单例的:不管页面上有多少个控制器使用这个服务,服务的实例永远只有一次。

var app = angular.module("app",[]);
app.controller("MainCtrl",["NameService",function(NameService){

this.set = function(){
NameService.setName(this.nickname);
}

this.get = function(){
return NameService.getName();
}
}]);


//创建一个服务,和创建controller一样
app.service("NameService",[function(){
var nickname="冷月心";//局部变量的方式也可以,this.name方式的也可以,注意要上下文匹配
this.setName = function(name){
nickname = name;
}

this.getName = function(){
return nickname;
}
}])

</script>
</body>
</html>

效果图

service函数_实例化

service函数_angular_02

service函数_service_03