> Am I being too hard on myself?
Yes
> What works for you? Is it better to dive in and finish a project, even if it's cobbled together from StackOverflow snippets and code borrowed from tutorials? Or should I take it as I sign that I'm out of my depth and study the underlying JavaScript until I understand it?
No and No
---
The purpose of a framework is to abstract the nuts and bolts of MVC into... MVC (or whatever pattern Angular uses). All you need to know are assumptions on how it works, and not drill down to the if statement that caused this code to run.
For instance, to get myself acquainted with Angular (I had prior experience with Ember and Backbone), I needed to know how it was the same and different from the approaches I already know:
- How the rendering cycle works (when data is set, when it gets rendered). All you need to know about it is what runs when.
- How Promises work, because most of Angular is Promise-based (resources, $http methods). All you need to know is when they're resolved and rejected, not how they work internally.
- How dependency injection works. Angular does some weird static analysis under the hood, and doesn't inject the dependency or run code if not being used. You don't need to know the logic of how it resolves them, just use them.
- How to structure code properly and write it elegantly (because directives are not all that elegant to build). This is based on personal preference. Learn from terribly copy-pasted code.
Everything else in Angular is plain JS and generic programming concepts (event emitters, watchers, inheritance) which you can learn but need not pry open the machine to understand.