Ok, strike all this. The width changes correctly, but then the aspect ratio doesn't update correctly without the extra $apply. Kind of like what your comment said, doh :)