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

首先看看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);
	});
});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券