Angular--factory
Angular -- Factory
2023-09-27 14:26:51 时间
代码
<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8">
<title>Angular--factory</title>
<style>
*{margin: 0;padding: 0;}
main{width: 300px;background-color: yellowgreen;margin:100px auto;color:white;text-align: center;
}
</style>
</head>
<body>
<main ng-controller="MainCtrl as mainCtrl">
<p>{{mainCtrl.name}}</p>
<!-- 这里特意用了一下ng-bind指令,和双大括号效果一样 -->
<p ng-bind="mainCtrl.age"></p>
<button ng-click="mainCtrl.sayHello();">打招呼</button>
</main>
<script type="text/javascript" src="./angular.min.js"></script>
<script type="text/javascript">
var app = angular.module("app",[]);
//控制器
app.controller("MainCtrl",["StudentFactory",function(StudentFactory){
//不论是服务还是工厂,都是注入的方式
this.name=StudentFactory.name;
this.age=StudentFactory.age;
//用函数需要以return的方式
//this.sayHello=StudentFactory.sayHello()这样写会立即执行
//工厂在被注入的时候就开始工作了,一旦控制器实例化就会立即执行
this.sayHello=function(){
return StudentFactory.sayHello();
}
}]);
app.factory("StudentFactory",[function(){
//工厂,本质也是一个普通函数,和服务的区别在于封装性更好一些
//工厂格式也比较严谨,要求return一个东西,也就是向外暴露的对象
var name="Tom";
var age=18;
function sayHello(){
alert("大家好,我叫"+name+",今年"+age+"岁")
}
//左侧是向外暴露的API名称,右侧是对应的变量或函数名
return {
"name":name,
"age":age,
"sayHello":sayHello
}
}]);
</script>
</body>
</html>
效果图
说明
工厂和服务都是属于业务层面的东西,各种业务,各种脏活累过都往里边放,等着controller调用
学习资源推荐:https://blog.csdn.net/qq_42813491/article/details/90213353
相关文章
- 利用angular结合translate为项目实现国际化
- 在angular中利用分页插件进行分页
- angular -- $resource 用法
- Angular启动/node_modules/@types/node/index.d.ts (20,1): Invalid ‘reference‘ directive syntax.
- Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(一)
- Angular $cookieStore简单应用
- Angular service定义服务
- angular学习-入门基础
- AngularJS学习笔记--002--Angular JS路由插件ui.router源码解析
- Angular移动工具集要让Web应用有原生的感觉
- [转贴]有关Angular 2.0的一切
- Angular 2拆分,分离了Dart代码库