this vs $scope in angular.js?
本问题已经有最佳答案,请猛点这里访问。
我正在开发一个带有Angular的Rails应用程序,过去我一直使用$scope访问Angular控制器的变量和方法。在codeschool上观看了angular.js课程的成形之后,我意识到使用这个和控制器别名是访问它们的更好方法。
不管怎样,我的应用程序在$scope上运行良好,但是当我切换到"this"实现时,laboratorios var变为空…
我在这里输入了一些代码:HTML:
1 2 3 4 | <tr ng-repeat="laboratorio in labCtrl.laboratorios"> <td>{{ laboratorio.nombre }}</td> <td>{{ laboratorio.razon_social }}</td> <td>{{ laboratorio.direccion }}</td> |
角度编码:
1 2 3 4 5 6 7 8 9 | (function() { var app = angular.module('guiaV', []); app.controller('LaboratorioController', function( $http) { this.laboratorios = []; return $http.get('./laboratorios.json').success(function(data) { return this.laboratorios = data; }); }); })(); |
有什么想法吗?
您放入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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(EDOCX1的返回值〔6〕),因此Angular认为这个(HTTP Promise)是您的实际控制器(它分配给
没时间测试了,希望我没弄错。
这里有一个很小的例子
您在一个闭包内为
1 2 3 4 5 6 7 8 9 | (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)); }); })(); |
或者,您可以使用两个范围中都可用的变量:
1 2 3 4 5 6 7 8 9 10 | (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; }); }); })(); |