我尝试加载通过$ http获得的图像,但是它不能与controller as一起使用。但是,它可以与$ 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;
})
为了使用controllerAs,您必须了解this
所指的范围。
在这种情况下,您正在this
HTTP调用中使用函数内部,这限制了this
该函数的范围。
您必须确保这this
是指控制器的范围。
您可以使用以下方法解决此问题var _this = this;
:
.controller('SettingsController1', function($http) {
var _this = this;
$http.get(imgFeedUrl)
.success(function(data) {
_this.myImg = validImg;
}).error(function(){
_this.noImg = invalidImg;
});
})
这是更正的小问题... http://plnkr.co/edit/i9ZEMtVyT8XrYpxeLHBc?p=preview
但是,此中断正常工作的唯一原因是因为您的HTTP调用失败...您使用的是错误回调而不是成功回调
因此,对于真实的代码,您将需要像上面的代码片段一样执行此操作,并且当HTTP调用成功时,它将按预期方式运行,而不是仅在失败时设置映像。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句