jan*_*uez 18 javascript ruby-on-rails angularjs
我正在开发一个带有角度的rails应用程序,在过去我一直使用$ scope来访问角度控制器的变量和方法.在使用了代码学校的Angular.js课程后,我意识到使用它和控制器的别名是访问它们的更好方法.
无论如何,我的应用程序与$ scope工作正常,但当我改为" this "实现时,laboratorios var变空了......
我在这里放一些代码:html:
<div ng-controller="LaboratorioController as labCtrl">
<tr ng-repeat="laboratorio in labCtrl.laboratorios" >
<td>{{ laboratorio.nombre }}</td>
<td>{{ laboratorio.razon_social }}</td>
<td>{{ laboratorio.direccion }}</td>
Run Code Online (Sandbox Code Playgroud)
角度代码:
(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;
});
});
})();
Run Code Online (Sandbox Code Playgroud)
任何的想法?
您放入的函数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'
Run Code Online (Sandbox Code Playgroud)
你的控制器返回一个http promise(返回值$http.get(...).success(...)
),所以angular认为这个(http promise)是你的实际控制器(它分配的东西$scope.labCtrl
).
没时间测试它,希望我做对了.
这里有小小的例子
归档时间: |
|
查看次数: |
3892 次 |
最近记录: |