Q:

Why controller as not working with ng-src?

I tried loading an image obtained via $http, but it's not working with controller as.  However, It's working just fine with $scope. I thought the two are the same, and I would prefer using controller as if I can make it work. The example at http://plnkr.co/edit/9KvvyKQggKTthLDFOAab?p=preview will show the issue. The $scope version will update the image once it's set, but the other one never gets updated.
angular.module('controllerAsExample', [])

.controller('SettingsController1', function($http) {
  $http.get(imgFeedUrl)
    .success(function(data) {

    }).error(function(){
       this.myImg = validImg;
    });
    this.noImg = invalidImg;
})

.controller('SettingsController2', function($http, $scope) {
  $http.get(imgFeedUrl)
    .success(function(data) {

    }).error(function(){
       $scope.myImg = validImg;
    });
    $scope.noImg = invalidImg;
})

A:

In order to use controllerAs, you have to be aware of the scope that this is referring to. 
In this case, you are using this inside of a function in your HTTP call which is constraining the scope of this to that function. 
You have to make sure that this is referring to the scope of the controller. 
You can solve this by using something like var _this = this;:
.controller('SettingsController1', function($http) {

  var _this = this;  

  $http.get(imgFeedUrl)
    .success(function(data) {
        _this.myImg = validImg;
    }).error(function(){
       _this.noImg = invalidImg;
    });
})

Here's the plunk corrected...
http://plnkr.co/edit/i9ZEMtVyT8XrYpxeLHBc?p=preview
However, the only reason this plunk is working is because your HTTP call is failing... you're using the error callback instead of the success callback
So, for the real code, you'll need to do it like my snippet above and when the HTTP call succeeds, it will behave as expected instead of only setting the image on failure. 

