AngularJS 承诺回调的范围
AngularJS scoping of promise callbacks
我正在尝试使用 promises 稍微整理一下我的 Angular 代码。但是,当我输入回调函数(成功或错误)时。我的瞄准镜不见了。 $scope、service 和 object 在回调中都是 null。
变量 vm 仍然是已知的。
关于如何解决这个问题的任何想法?
(function (app) {
'use strict';
var MyController = (function () {
function MyController($scope, aService, anotherService) {
var vm = {
loaded: false,
anObjToInstantiate: null,
error: null
};
aService.makeAServiceCall()
.success(function (result) {
vm.anObjToInstantiate = result.data;
anotherService.notifySomething(); /* Null! */
vm.loaded = true;
})
.error(_handleError);
function _handleError(error) {
vm.error = error;
}
return vm;
};
MyController.$inject = ['$scope', 'AService', 'AnotherService'];
return MyController;
}());
app.controller('MyController', MyController);
}(angular.module('app.amodule')));
你的控制器定义错误。它不应该 return 任何东西。它所做的只是使用范围变量和服务。
控制器
(function(app) {
'use strict';
var MyController = function($scope, aService, anotherService) {
$scope.vm = {
loaded: false,
anObjToInstantiate: null,
error: null
};
aService.makeAServiceCall()
.success(function(result) {
$scope.vm.anObjToInstantiate = result.data;
anotherService.notifySomething(); /* Null! */
$scope.vm.loaded = true;
})
.error(_handleError);
function _handleError(error) {
$scope.vm.error = error;
}
};
MyController.$inject = ['$scope', 'AService', 'AnotherService'];
}());
app.controller('MyController', MyController);
}(angular.module('app.amodule')));
为了ControllerAs
想在下面
控制器(ControllerAs)
(function(app) {
'use strict';
var MyController = function($scope, aService, anotherService) {
var ctrl = this;
ctrl.vm = {
loaded: false,
anObjToInstantiate: null,
error: null
};
aService.makeAServiceCall()
.success(function(result) {
ctrl.vm.anObjToInstantiate = result.data;
anotherService.notifySomething(); /* Null! */
ctrl.vm.loaded = true;
})
.error(_handleError);
function _handleError(error) {
ctrl.vm.error = error;
}
};
MyController.$inject = ['$scope', 'AService', 'AnotherService'];
}());
我正在尝试使用 promises 稍微整理一下我的 Angular 代码。但是,当我输入回调函数(成功或错误)时。我的瞄准镜不见了。 $scope、service 和 object 在回调中都是 null。
变量 vm 仍然是已知的。
关于如何解决这个问题的任何想法?
(function (app) {
'use strict';
var MyController = (function () {
function MyController($scope, aService, anotherService) {
var vm = {
loaded: false,
anObjToInstantiate: null,
error: null
};
aService.makeAServiceCall()
.success(function (result) {
vm.anObjToInstantiate = result.data;
anotherService.notifySomething(); /* Null! */
vm.loaded = true;
})
.error(_handleError);
function _handleError(error) {
vm.error = error;
}
return vm;
};
MyController.$inject = ['$scope', 'AService', 'AnotherService'];
return MyController;
}());
app.controller('MyController', MyController);
}(angular.module('app.amodule')));
你的控制器定义错误。它不应该 return 任何东西。它所做的只是使用范围变量和服务。
控制器
(function(app) {
'use strict';
var MyController = function($scope, aService, anotherService) {
$scope.vm = {
loaded: false,
anObjToInstantiate: null,
error: null
};
aService.makeAServiceCall()
.success(function(result) {
$scope.vm.anObjToInstantiate = result.data;
anotherService.notifySomething(); /* Null! */
$scope.vm.loaded = true;
})
.error(_handleError);
function _handleError(error) {
$scope.vm.error = error;
}
};
MyController.$inject = ['$scope', 'AService', 'AnotherService'];
}());
app.controller('MyController', MyController);
}(angular.module('app.amodule')));
为了ControllerAs
想在下面
控制器(ControllerAs)
(function(app) {
'use strict';
var MyController = function($scope, aService, anotherService) {
var ctrl = this;
ctrl.vm = {
loaded: false,
anObjToInstantiate: null,
error: null
};
aService.makeAServiceCall()
.success(function(result) {
ctrl.vm.anObjToInstantiate = result.data;
anotherService.notifySomething(); /* Null! */
ctrl.vm.loaded = true;
})
.error(_handleError);
function _handleError(error) {
ctrl.vm.error = error;
}
};
MyController.$inject = ['$scope', 'AService', 'AnotherService'];
}());