这与angular.js中的$ scope有关吗?

这个问题在这里已经有了答案:

  • AngularJS控制器中的'this'与$ scope有关的7个答案

  • 您将放入angular.controller的函数用作构造函数。 不返回任何内容的JavaScript构造函数,隐式返回this 。 如果构造函数返回另一个对象,则该对象应该是新对象。 例如:

    function Class1() {
        this.prop = 'xxx';
    }
    var obj1 = new Class1();
    console.log(obj1.prop); // prints 'xxx'
    
    function Class2() {
        this.prop = 'xxx';
        return {
            hooray: 'yyy'
        };
    }
    var obj2 = new Class2();
    console.log(obj2.prop); // prints undefined
    console.log(obj2.hooray); // prints 'yyy'
    

    你的控制器返回一个http promise( $http.get(...).success(...)的返回值),所以角度相信这个(http promise)是你的实际控制器(它分配给$scope.labCtrl )。

    没有时间去测试它,希望我能理解它。

    微小的例子在这里


    您为闭包中的this.laboratorios分配了一个值。 请记住,它的范围与外部范围分开。 this适用于完全不同的事物。 这就是为什么使用$scope更可靠(如果你问我的个人意见,可读性更强)。 您可能想要将闭包绑定this值:

    (function() {
        var app = angular.module('guiaV', []);
        app.controller('LaboratorioController', function( $http) {
          this.laboratorios = [];
          $http.get('./laboratorios.json').success(function(data) {
            return this.laboratorios = data;
          }.bind(this));
        });
    })();
    

    或者,您可以使用两个范围都可用的变量:

    (function() {
        var app = angular.module('guiaV', []);
        app.controller('LaboratorioController', function( $http) {
          this.laboratorios = [];
          var foo = this;
          $http.get('./laboratorios.json').success(function(data) {
            return foo.laboratorios = data;
          });
        });
    })();
    
    链接地址: http://www.djcxy.com/p/77791.html

    上一篇: this vs $scope in angular.js?

    下一篇: What "things" can be injected into others in Angular.js?