Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我不能注射曲奇饼?_Javascript_Angularjs_Angular Cookies - Fatal编程技术网

Javascript 为什么我不能注射曲奇饼?

Javascript 为什么我不能注射曲奇饼?,javascript,angularjs,angular-cookies,Javascript,Angularjs,Angular Cookies,我有 但似乎找不到$cookies: angular.module("myApp", ["ngCookies"]). config(function($cookies) { console.log($cookies.myCookie); }); 我不确定您的功能用例是什么,但您不能在配置块中注入服务($cookies是服务)。配置块中只能注入常量和提供程序 您可以将服务注入到运行块中,但我不知道这是否对您有帮助,因为我不确定您想用这些cookie做什么 顺便说

我有

但似乎找不到$cookies:

angular.module("myApp", ["ngCookies"]).
    config(function($cookies) {
         console.log($cookies.myCookie);
    });

我不确定您的功能用例是什么,但您不能在配置块中注入服务(
$cookies
是服务)。配置块中只能注入常量和提供程序

您可以将服务注入到运行块中,但我不知道这是否对您有帮助,因为我不确定您想用这些cookie做什么


顺便说一句:您似乎在混合主角度文件和
ngCookies
模块的版本。这与您的问题没有直接联系,但这很奇怪。

您应该使用名称
$cookieProvider
而不是
$cookies

 Unknown provider: $cookies from myApp

您可以手动注入它:

angular.module("MyApp", ["ngCookies","ngRoute"])
    .config(["$routeProvider", "$locationProvider","$cookiesProvider",
        function($routeProvider, $locationProvider, $cookies) {

        }
    ]);
您可能想知道为什么我们必须为
injector()
调用以及
.invoke()
调用指定
ngCookies

ngCookies
是模块的名称(您需要在项目中包含才能使用此模块)。当您通过调用
injector()
创建injector时,您可以指定应该使用哪些模块,以便可以使用这些模块提供的服务

invoke()
调用函数,但让我们指定哪些服务(由各个模块提供)应该传递到函数中(在我们的例子中,
ngCookies
模块提供的服务命名为
$cookies

这个解决方案有点像黑客,因为你手动创建的新注入器与angular应用程序自动创建和使用的注入器不同,但它应该是安全的,因为
ngCookie
似乎只使用angular的功能,这些功能不保持自己的状态,只是浏览器功能的薄包装,看起来您需要在服务模块中删除“ngCookies”,如果您尚未:

myApp.config(function() {
  var $cookies;
  angular.injector(['ngCookies']).invoke(['$cookies', function(_$cookies_) {
    $cookies = _$cookies_;
  }]);

  // here you can use $cookies as usual
});

这对我很管用。请记住,
$cookies
仅适用于Angular允许您注入服务的情况(有关详细信息,请参阅公认的答案)。

我遇到了同样的问题。 角度版本和角度版本不匹配。 我所做的是将bower.json更新为两者的工作版本

var serviceModule = angular.app('App.services', ['ngCookies']);
然后我跑:

"angular": ">=1.2.*",
"angular-cookies": ">=1.2.*"
我有一个问题:

bower install
找不到适合angular的版本,请选择一个:
1) angular#1.3.13,解析为1.3.13,为angular cookies#1.3.13所要求
2) 角度#>=1.2.x=1.2.*解析为1.4.0,为hashve所需
5) angular#>=1,解析为1.4.0,为angular bootstrap#0.11.2所需
6) 角度#>=1.2.26=1.0.8,解析为1.4.0,是角度ui路由器#0.2.15所需

10) angular#>=1.2.0与其他人所说的一样,您不能使用angular cookie服务。然而,人类并没有已知的法律规定你们不能简单地使用document.cookie来访问它并自己解析它。或者,您可以创建自己的提供程序,让您能够访问cookies,并可以将其注入。请记住angular只是一个框架,当框架有限制时,您必须记住使用javascript。

如angular documentation()-模块加载和依赖项-配置块-在提供程序注册和配置阶段执行。只有提供程序和常量才能注入配置块。这就是为什么您收到错误
未知提供程序:$cookies来自myApp
,因为
$cookies
是一项服务,因此在
配置
块中不可用。谢谢。你说的“混合版本”是什么意思?我不需要ngCookies模块的angular cookies吗?@JeffWong通过混合版本,我的意思是您在版本1.0.3中包含了主angular模块,而在版本1.0.1中包含了ngCookies。通常两个版本应该是相同的。运行块是正确的答案。顺便问一下,在这个上下文中什么是“常量”?@pkozlowski.opensource有来自OP的确切例子,你能详细说明你答案的最后一部分吗?我如何使用$cookiesProvider获得cookie值?如果其他人好奇,这是一个错误的答案。ngCookies中没有$cookiesProvider服务。不仅如此,NgCookie内部的工厂直到配置函数运行后才被加载。我一直在这样做,它工作得很好,直到缩小,在这一点上它崩溃得很厉害。我注意到$cookies,如果被更改,就会中断,尽管注入器注释*应该*是小型化安全的_$ngCookies源代码中没有cookies,这意味着$cookies可能是angular的魔法的一部分。需要进行调查(除非你已经找到了缩小的方法……)以便记录在案,所以不让我加下划线。很抱歉给你带来了困惑。我试过了。@dudewad我改进了我的答案,用非角度感知缩小。天哪,谢谢你。这是一个完美的例子,“角度的方式”是绝对混乱。为什么有这么多方法可以做到这一点,而其中只有一种方法可以用于缩小?例如,为什么我们必须为injector()调用以及.invoke调用指定ngCookies?为什么在angular站点上完全按照“缩小安全”规范进行的注释,即使在这种情况下没有缩小,也不起作用?你能帮我解释一下吗,因为我完全不知道它(请看这里:)…因为他们在那里展示的“注释”方法中没有一个(这是令人困惑的,因为他们从来没有告诉你可以使用哪种方法来获取喷油器的实例)在缩小或不缩小时都能工作(至少,不是在module.config中)。我知道这有点像黑客,但你会认为在module.config中使用cookie并不是非常不寻常的事情,它们会提供一些方法来实现它。啊。
bower install
Unable to find a suitable version for angular, please choose one:
1) angular#1.3.13 which resolved to 1.3.13 and is required by angular-cookies#1.3.13 
2) angular#>=1.2.x <=1.4.x which resolved to 1.3.16 and is required by oclazyload#1.0.1 
3) angular#1.4.0 which resolved to 1.4.0 and is required by angular-cookies#1.4.0 
4) angular#>=1.2.* which resolved to 1.4.0 and is required by hashve 
5) angular#>=1 which resolved to 1.4.0 and is required by angular-bootstrap#0.11.2 
6) angular#>=1.2.26 <=1.5 which resolved to 1.4.0 and is required by angular-translate#2.7.2 
7) angular#~1.x which resolved to 1.4.0 and is required by restangular#1.5.1 
8) angular#^1.2.6 which resolved to 1.4.0 and is required by angular-socket-io#0.6.1 
9) angular#>= 1.0.8 which resolved to 1.4.0 and is required by angular-ui-router#0.2.15 
10) angular#>=1.2.0 <1.5.0 which resolved to 1.4.0 and is required by angular-moment#0.10.1Prefix the choice with ! to persist it to bower.json