app.controller('sampleCtrl', function($scope, $http, nonService){
this.someVar = 'Hello World';
$http.post('funcsPHP/2.0/getConditionProductService.php',
{ 'product' : angular.toJson(this.productObj) }).
success(function(data, status, headers, config) {
$scope.saveData = data; // works fine
this.saveData = data // 'this' doesnt refer to the controller 'sampleCtrl' anymore, but to the $http instance, right ?
}).
error(function(data, status, headers, config) {
console.log("ERROR");
// log error
});
});
我知道我能够将数据保存到$ scope,但我想知道如何将数据保存到控制器变量,例如'this.someVar'。我是否必须将我的控制器实例注入$ http?
干杯!
答案 0 :(得分:2)
有几种方法。
最简单的方法是只指定一个变量来指向控制器中的this
值。最常见的名称是_this
,self
和that
。
所以你得到:
app.controller('sampleCtrl', function($scope, $http, nonService){
this.someVar = 'Hello World';
var self = this;
$http.post('funcsPHP/2.0/getConditionProductService.php',
{ 'product' : angular.toJson(this.productObj) }).
success(function(data, status, headers, config) {
$scope.saveData = data;
self.saveData = data;
})
.error(function(data, status, headers, config) {
console.log("ERROR");
// log error
});
});
另一种方法是使用Function#bind()
成功处理程序在其中正确设置this
。
那会给你:
app.controller('sampleCtrl', function($scope, $http, nonService){
this.someVar = 'Hello World';
$http.post('funcsPHP/2.0/getConditionProductService.php',
{ 'product' : angular.toJson(this.productObj) }).
success((function(data, status, headers, config) {
$scope.saveData = data;
this.saveData = data;
}).bind(this))
.error(function(data, status, headers, config) {
console.log("ERROR");
// log error
});
});
答案 1 :(得分:-1)
使用“Controller As”访问控制器实例变量的方式:
<div ng-controller="sampleCtrl as ctrl">
{{ctrl.someVar}}
</div>