为什么控制器不能使用ng-src?

时间:2015-07-03 06:33:36

标签: angularjs

我尝试加载通过$ http获取的图片,但是它没有使用控制器作为。但是,它与$ scope的工作正常。我认为两者是相同的,我更喜欢使用控制器,就像我可以使它工作。 http://plnkr.co/edit/9KvvyKQggKTthLDFOAab?p=preview上的示例将显示此问题。 $ scope版本将在设置后更新图像,但另一个版本永远不会更新。

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;
})

1 个答案:

答案 0 :(得分:5)

要使用controllerAs,您必须了解//export header for (i = 1; i <= this.datagridview1.Columns.Count; i++) { ExcelSheet.Cells[3, i] = this.datagridview1.Columns[i - 1].HeaderText; } //export data for (i = 1; i <= this.datagridview1.RowCount; i++) { for (j = 1; j <= datagridview1.Columns.Count; j++) { ExcelSheet.Cells[i + 3, j] = datagridview1.Rows[i - 1].Cells[j - 1].Value; } } 所指的范围。

在这种情况下,您在HTTP调用中的函数内使用this,这限制了this对该函数的范围。

您必须确保this指的是控制器的范围。

您可以使用this

之类的内容来解决此问题
var _this = this;

这里的纠正...... http://plnkr.co/edit/i9ZEMtVyT8XrYpxeLHBc?p=preview

然而,这个插件工作的唯一原因是因为你的HTTP调用失败了...你正在使用错误回调而不是成功回调

因此,对于真实代码,您需要像上面的代码片段那样执行此操作,并且当HTTP调用成功时,它将按预期运行,而不是仅在失败时设置图像。