首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >angularJS学习之路(二十一)---injector---初探依赖注入

angularJS学习之路(二十一)---injector---初探依赖注入

作者头像
wust小吴
发布2019-07-08 16:51:07
4390
发布2019-07-08 16:51:07
举报
文章被收录于专栏:风吹杨柳风吹杨柳

首先看看injector 怎么用 

js代码:

var app = angular.module("myApp",[]);

app.factory("game",function(){
	return {
		title:"StarCraft"
	}
});
//创建一个injector 参数为绑定的模板  会返回一个injector对象
//通过返回的对象你可以调用模板里面的各种服务
angular.injector(["myApp"]).invoke(function(game){
	alert(game.title);
})

app.controller("AppController",function($scope,game){
	$scope.title = game.title;
});

HTML代码:

<!DOCTYPE html>
<html ng-app="myApp">

	<head>
		<meta charset="utf-8">
		<title></title>
	</head>

	<body>

		<div ng-controller="AppController">{{title}}</div>

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

</html>

这个例子 运行效果就是浏览器一打开  就会弹出    StarCraft 当你点击确定之后,页面的元素才  开始从 {{title}}变成 StarCraft

然后JS代码还可以换种方式写:

var app = angular.module("myApp",[]);

app.factory("game",function(){
	return {
		title:"StarCraft"
	}
});
//创建一个injector 参数为绑定的模板  会返回一个injector对象
//通过返回的对象你可以调用模板里面的各种服务
//这种做法会导致所有的当前的模板下面的控制器都会有这个服务  就是弹出game.title  
//如非特殊场景,不建议使用
angular.injector(["myApp"]).invoke(function(game){
	alert(game.title);
})

app.controller("AppController",function($scope,game){
	$scope.title = game.title;
});

app.controller("OtherController",function($scope,$injector) {
	//$injector 服务在angularJS中已经有了  就不需要使用  angular.injector(["myApp"])显示绑定了
	$injector.invoke(function(game){
		$scope.title = game.title;
		alert(game.title);
	});
});
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年11月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档