When working in Angular, it’s pretty straightforward to create components and nest those components inside of other components. However, it is a bit more complicated to design customizable components that will display content based on the components passed to them (content projection).
Reactive programming is all about streams. It involves combining streams, filtering streams, and transforming streams. In reactive programming, the application does not need to pull for data, but it is notified whenever a new event occurs. A few months ago, I wrote a post on reactive programming in WPF using ReactiveUI. Recently, we’ve been working on […]
As I continued to build out my AngularJS + Google Sheets prototype, I ran into another problem. I wanted to load the data from two Google Sheets and access the data in the same function. I created this example, which loads in one Sheet with weather forecasts and another with weather types and descriptions, as […]
As my recent project using Google Sheets and AngularJS grew into a successful prototype, I ran into a series of issues creating a feedback loop. I wanted to set up a tracking tool for page hits and log searches by users. My goal was to identify the pages that were used the most and the […]
The value of having test coverage in any software application is pretty obvious: making features is a lot less scary when you have a test suite that will yell at you if you break something. The value of adding test coverage to a large legacy project, however, is not as clear—especially to stakeholders who need new […]
Events are useful for communicating changes across components while keeping them decoupled. AngularJS provides a nice interface for this, including $broadcast and $on for publishing and subscribing. Luckily, these aspects of an application can be easily tested using Karma.
Binding unescaped HTML or CSS content on a web page is a scary proposition for most web developers. The idea conjures up black-hat hackers attacking your company’s infrastructure and high-visibility hacks. In fact, cross-site scripting vulnerabilities may exist on as many as 70% of all web sites. In this post, I’ll explain what cross-site scripting […]
When defining directives in AngularJS, there are three different ways to pass in variables: no scope, inherited scope, or isolated scope. Whether or not you’re using the “controller as” syntax (and I hope you are), you still have to decide which one to use. In this post, I’ll explain the differences and suggest why you might—or might not—want to […]
In such a rapidly changing industry as the web, we can’t be expected to keep track of everything that’s going on. But by taking a few minutes to look around and see what the other approaches are, it’s easier to stay on top of the technology as it evolves and grows.
Protractor is an end-to-end testing framework for AngularJS applications that uses a real browser, just as a real user would. It is built on top of NodeJS and WebDriverJS and taps into the internals of Angular to know when Angular is done processing and updating bindings. The joy of Protractor and WebDriverJS is that we […]