Jef*_*ong 28 javascript angularjs angular-cookies
我有
<body ng-app="myApp">
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular-cookies.min.js">
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
一切都正确加载.
然后在我的JavaScript中我尝试注入ngCookies:
angular.module("myApp", ["ngCookies"]).
config(function($cookies) {
console.log($cookies.myCookie);
});
Run Code Online (Sandbox Code Playgroud)
但它似乎没有找到$ cookies:
Unknown provider: $cookies from myApp
Run Code Online (Sandbox Code Playgroud)
pko*_*rce 29
我不确定你的功能用例是什么,但你不能$cookies在配置块中注入服务(是一项服务).只能在配置块中注入常量和提供程序.
您可以将服务注入运行块,但我不知道这是否对您有所帮助,因为我不确定您尝试使用这些cookie做什么.
顺便说一句:你好像是混合了主角度文件和ngCookies模块的版本.这与您的问题没有直接关系,但这很奇怪.
Kam*_*zot 11
您可以手动注入它:
myApp.config(function() {
var $cookies;
angular.injector(['ngCookies']).invoke(['$cookies', function(_$cookies_) {
$cookies = _$cookies_;
}]);
// here you can use $cookies as usual
});
Run Code Online (Sandbox Code Playgroud)
您可能想知道为什么我们必须ngCookies将injector()呼叫指定为.invoke()呼叫?
ngCookies是模块的名称(您需要在项目中使用angular-cookies.js才能使用此模块).通过调用创建注入器时,injector()请指定应使用哪些模块,以便可以使用这些模块中的服务.
invoke()调用一个函数但让你指定哪些服务(由各种模块提供)应该传递给函数(在我们的例子中,ngCookies模块提供的服务被命名$cookies)
这个解决方案有点像黑客,因为你手动创建新的注入器,与你的角度应用程序自动创建和使用的注入器分开,但它应该是安全的,因为ngCookie似乎只使用不保留自己的角度功能状态,只是浏览器功能的薄包装.