我对AngularJS的整个世界以及它的工作方式都很陌生,但是我正在努力让它按照预期工作。我知道这与我使用$http.get()
的方式以及尝试将变量返回给我的控制器有关,但我就是想不出来。
如果使用$scope
而不是this
,我可以让它正常工作,但如果可能的话,我更喜欢使用this
,这样我就可以使用"controller as"。
代码:
app.controller('ctrlSuppliers', function($http){
this.supplierList = {};
$http.get("http://some_url_here")
.success(function(response) { this.supplierList = response.records;})
.error(function() { this.supplierList = [{supplier_id: 0, supplier_name: 'Error Getting Details'}];});
});
从这个例子中,我不能在HTML页面的
supplierList
中访问任何来自$http.get
请求的结果(即{{ supplier.supplierList [0] .supplier_name }}
不显示任何结果)。我知道如果我将控制器更改为
$scope
,我就可以访问那些数据(虽然不使用上述相同的格式),我也知道数据是通过在.success
调用内使用console.log(this.supplierList)
进行填充的。我也知道它不起作用的原因是因为
this
的上下文从控制器内部变为了$http.get
调用内部。所以我的问题是:如何使用
this
而不是scope
访问来自$http.xxx调用的结果?我已经阅读了一些不同的来源,但大多数都谈到了使用$scope
和promises。我没有找到任何涵盖使用this
(或使用var supplier = this
声明它)的方法。非常感谢您的帮助。谢谢,