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

巴里库

我尝试加载通过$ 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所指的范围

在这种情况下,您正在thisHTTP调用中使用函数内部,这限制了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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular:为什么CSS证明不能与ng-repeat一起使用?

来自分类Dev

为什么angular的ng-disabled不能与bootstrap的btn类一起使用?

来自分类Dev

为什么“ng-attr-”不能与属性“multiple”一起使用?

来自分类Dev

为什么我的 ng-show 不能与 <img> 一起使用?

来自分类Dev

LibreOffice为什么不能与HUD一起使用?

来自分类Dev

为什么模拟不能与AsyncTask一起使用?

来自分类Dev

LibreOffice为什么不能与HUD一起使用?

来自分类Dev

为什么childElementCount不能与jQuery一起使用?

来自分类Dev

为什么javascript“ this”不能与“ each”一起使用?

来自分类Dev

setuid为什么不能与mount一起使用?

来自分类Dev

为什么JQuery不能与CryptoJS一起使用?

来自分类Dev

为什么 grep 不能与 iostat 一起使用?

来自分类Dev

为什么 foreach 不能与 String 一起使用?

来自分类Dev

为什么我的$ templateCache设置不能与新的Angular路由器一起使用?

来自分类Dev

为什么多个类选择器不能与removeClass一起使用

来自分类Dev

从脚本到PHP解释器的参数传递不能与引号一起使用,为什么?

来自分类Dev

为什么我的$ templateCache设置不能与新的Angular路由器一起使用?

来自分类Dev

为什么我的 javascript 计算器不能与 base.html 一起使用?

来自分类Dev

为什么Quickbooks可以与Ubuntu一起使用,而不能与Fedora一起使用?

来自分类Dev

为什么它可以与$ scope一起使用,但不能与`this`一起使用?

来自分类Dev

为什么不能将插值表达式与“ ng-model”一起使用,而可以与“ ng-src”一起使用?

来自分类Dev

为什么不能将插值表达式与“ ng-model”一起使用,而可以与“ ng-src”一起使用?

来自分类Dev

为什么提交的myForm。$不能与ng-messages一起使用,而与ng-if一起使用呢?

来自分类Dev

为什么提交的myForm。$不能与ng-messages一起使用,而与ng-if一起使用呢?

来自分类Dev

ASP.Net MVC脚本不能与控制器的默认操作URL一起使用。同样适用于控制器/操作URL

来自分类Dev

为什么此脚本不能与nohup一起使用,但是不能,不能呢?

来自分类Dev

为什么此脚本不能与nohup一起使用,但是不能,不能呢?

来自分类Dev

为什么输入不能与ng-repeat一起正常工作

来自分类Dev

为什么输入不能与ng-repeat一起正常工作

Related 相关文章

  1. 1

    Angular:为什么CSS证明不能与ng-repeat一起使用?

  2. 2

    为什么angular的ng-disabled不能与bootstrap的btn类一起使用?

  3. 3

    为什么“ng-attr-”不能与属性“multiple”一起使用?

  4. 4

    为什么我的 ng-show 不能与 <img> 一起使用?

  5. 5

    LibreOffice为什么不能与HUD一起使用?

  6. 6

    为什么模拟不能与AsyncTask一起使用?

  7. 7

    LibreOffice为什么不能与HUD一起使用?

  8. 8

    为什么childElementCount不能与jQuery一起使用?

  9. 9

    为什么javascript“ this”不能与“ each”一起使用?

  10. 10

    setuid为什么不能与mount一起使用?

  11. 11

    为什么JQuery不能与CryptoJS一起使用?

  12. 12

    为什么 grep 不能与 iostat 一起使用?

  13. 13

    为什么 foreach 不能与 String 一起使用?

  14. 14

    为什么我的$ templateCache设置不能与新的Angular路由器一起使用?

  15. 15

    为什么多个类选择器不能与removeClass一起使用

  16. 16

    从脚本到PHP解释器的参数传递不能与引号一起使用,为什么?

  17. 17

    为什么我的$ templateCache设置不能与新的Angular路由器一起使用?

  18. 18

    为什么我的 javascript 计算器不能与 base.html 一起使用?

  19. 19

    为什么Quickbooks可以与Ubuntu一起使用,而不能与Fedora一起使用?

  20. 20

    为什么它可以与$ scope一起使用,但不能与`this`一起使用?

  21. 21

    为什么不能将插值表达式与“ ng-model”一起使用,而可以与“ ng-src”一起使用?

  22. 22

    为什么不能将插值表达式与“ ng-model”一起使用,而可以与“ ng-src”一起使用?

  23. 23

    为什么提交的myForm。$不能与ng-messages一起使用,而与ng-if一起使用呢?

  24. 24

    为什么提交的myForm。$不能与ng-messages一起使用,而与ng-if一起使用呢?

  25. 25

    ASP.Net MVC脚本不能与控制器的默认操作URL一起使用。同样适用于控制器/操作URL

  26. 26

    为什么此脚本不能与nohup一起使用,但是不能,不能呢?

  27. 27

    为什么此脚本不能与nohup一起使用,但是不能,不能呢?

  28. 28

    为什么输入不能与ng-repeat一起正常工作

  29. 29

    为什么输入不能与ng-repeat一起正常工作

热门标签

归档