-
Notifications
You must be signed in to change notification settings - Fork 271
Doesn't work when using controllerAs syntax #63
Comments
+1 |
1 similar comment
+1 |
Is this issue solved ? |
No—the code as written handles the narrow case of the handler being directly published as a property on the scope. If you wanted to fix this, fork + change $parse(attr.stripeForm)(scope).apply(scope, args) However, the general implementation is already an anti-pattern and fixing this particular line doesn't change that. Using your template to pass up a callback is the biggest issue. You'll notice that directives that react to actions like <form ng-submit="create(user)"></form> The reason the pattern of returning a function and then calling it internally is so problematic is that it very tightly couples you to the expectation that you don't have to do anything before getting the token. What if you decide you want to call a postal code lookup service so you only collect the postal code from the user but send the full address to Stripe? You're out of luck. You have to dig up all the Check out https://github.com/bendrucker/angular-stripe for a more flexible Stripe service, https://github.com/bendrucker/angular-credit-cards for validation and parsing, and https://github.com/bendrucker/angular-form-state for managing the submission state of any form (e.g. disabling the submit button during submission). |
👍 |
Yes! |
Dont forget, if you're lazy: ControllerAs is just syntactic sugar and you can still inject $scope into your controllers and use this / any plugin as normal. with $scope and reserve your controlleras syntax for everything else you're doing. |
any idea how to fix this? |
I'm getting this error when I submit the form:
TypeError: Cannot read property 'apply' of undefined
scope[attr.stripeForm].apply(scope, args);
The text was updated successfully, but these errors were encountered: