条带角度依赖注入错误未知提供者:

时间:2015-03-17 21:39:37

标签: angularjs node.js dependency-injection stripe-payments

我正在将条纹角度注入到模块中以创建条带标记,但我似乎有一些依赖注入问题:

我在index.html

中同时加载了Stripe.js和angular-stripe指令
<!-- Stripe includes-->

<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
<script type="text/javascript" src="components/stripe-angular/stripe-angular.js"></script>

<!-- Ends Stripe includes -->

<script src="app.js"></script>
<script src="javascripts/form.js"></script>
<script src="factory/appointments.js"></script>
<!-- <script src="directives/datepicker.js"></script>
 --><script src="controllers/main.js"></script>
<script src="controllers/form-controller.js"></script>

我根据文档正确注入:

angular.module('formApp')
.controller('formController', ['$scope', 'Appointment', 'stripe' , function($scope, Appointment) {
Stripe.setPublishableKey('my-key-here');
}]);

我做错了什么?

这是我的错误

Error: [$injector:unpr] Unknown provider: stripeProvider <- stripe <- formController
http://errors.angularjs.org/1.3.14/$injector/unpr?p0=stripeProvider%20%3C-<div ui-view="" class="ng-scope">tripe%20%3C-%formController 

3 个答案:

答案 0 :(得分:0)

您将stripe列为依赖项,但绝不会将其传递给您的函数:

.controller('formController', ['$scope', 'Appointment', 'stripe' , function($scope, Appointment) {

只需添加stripe参数:

.controller('formController', ['$scope', 'Appointment', 'stripe' , function($scope, Appointment, stripe) {

答案 1 :(得分:0)

angular-stripe directive,您的意思是https://github.com/gtramontina/stripe-angular吗?

如果是这样,你误解了它的用法(是的,它的文档很差)。您应该将stripe添加为模块依赖项而不是要注入的服务。将app.js中的代码更改为以下内容:

angular.module('formApp', ['stripe']);

并删除注射注释中的stripe,然后你就可以了。

您可能还需要将Stripe.setPublishableKey('your-publishable-key');添加到合适的位置,可能是run块或config块。

答案 2 :(得分:0)

文档很好。

首先确保您正在加载所需的文件:

<script src="https://js.stripe.com/v2/"></script>
<script src="/vendor/angular/angular.js"></script>
<script src="/vendor/angular-stripe/release/angular-stripe.js"></script>

然后将angular-stripe模块添加到您的应用中:

angular.module('app', [ 'angular-stripe']...

在您的配置块中加载stripeProvider并使用您的Stripe API密钥对其进行初始化。

angular.module('app').config(function(stripeProvider) {

  stripeProvider.setPublishableKey('yourapikey');

  ....

最后,您可以在控制器中使用它:

angular.module('app').controller('CheckoutCtrl', function(stripe) {

    stripe.card.createToken(card) ...

确保执行所有这些步骤。我从您的错误消息中猜到,您没有加载angular-stripe' module in your app which would then cause any call to stripeProvider`以使该错误失败。