【发布时间】:2015-07-26 07:56:19
【问题描述】:
我对整个 AngularJS 世界以及它的工作原理都很陌生,但是我正在努力让它按预期工作。我知道这与我使用 $http.get() 并尝试将变量分配回我的控制器的方式有关,但我就是想不通。
使用$scope 而不是this 我可以让它工作,但是如果可能的话,我更喜欢使用this 这样我可以使用“控制器作为”
代码:
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,我可以访问该数据(尽管不使用与上述相同的格式),并且我也知道通过在 @ 内使用 console.log(this.supplierList) 填充数据987654331@电话。
我也知道它不起作用的原因是this 的上下文从控制器内部更改为$http.get 调用内部。
所以我的问题是:如何使用this 而不是scope 访问$http.xxx 调用的结果?我已经阅读了一些关于它的不同来源,但大多数都在谈论使用 $scope 和承诺。我没有找到任何使用this(或使用var supplier = this 声明)的内容。任何帮助将不胜感激。
谢谢,
【问题讨论】:
-
请注意 $http 调用通常不属于您的控制器!将它们提取到服务中,以实现可重用性、稳定性和非无偿依赖注入。
-
@GrumbleSnatch 谢谢。正如我所说,我才刚刚开始研究 Angular,还没有时间浏览所有特性和功能,但是现在了解它可能会在我最终发现它们时为我节省大量时间
标签: javascript angularjs angularjs-http