angular.js - angular1.X上的问题

查看:86
本文介绍了angular.js - angular1.X上的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题


为什么这么写老是报$http没有注入,而换成factory就好用,求指点

解决方案

首先要明白,provider和factory的区别是,前者是ng中依赖注入服务实例的提供者,是用来构造factory或者service,而后者则是属于provider的语法糖形式而已,本质还是provider。
一般factory的声明形式为

module.factory(name, $getFunction(){...})

等价于

module.provider(name, {
   $get: $getFunction(){...}
})

所以举一反三咯,如果在factory中声明依赖注入的$http写法是

module.factory(name, [$http, $getFunction($http){...}])

那么provider就应该是

module.provider(name, {
   $get: [$http, $getFunction($http){...}]
})

如果硬要说明原理的话,应该是,provider是在ng初始化阶段,也就是module.config函数进行时运行的,这时候的服务工厂对象都处于配置状态,所以无法通过依赖注入来提供服务实例(因为服务都在初始化中),只有到module.run阶段时,工厂对象都配置完成了,才能按照依赖注入的语法将相应的服务实例注入进来

这篇关于angular.js - angular1.X上的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆