我尝试加载通过$ 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;
})
答案 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调用成功时,它将按预期运行,而不是仅在失败时设置图像。