我试图理解为什么我的控制器中注入的某些dependecies(或其他声明的变量)在'然后'的成功/错误回调中不可用。延期承诺的功能。
我已经在角色$ q的文档和几个帖子中进行了搜索,但我无法回答我的问题...也许我没有搜索到正确的关键字,我不知道。
这是我的控制器片段,其中包含我想知道的问题。 提前谢谢!
(function () {
'use strict';
angular
.module('app.aModule')
.controller('mycontroller', MyController);
MyController.$inject = ['$controller', '$scope', 'myService'];
function MyController($controller, $scope, myService) {
$scope.myProp;
var myVariable1 = 'hello';
//.............some code.................
$scope.save = function(event) {
var myVariable2 = 'World!';
myService.post($scope.myProp).then(
function (result) {
// 1. can I access to myVariable1 here?
// 2. can I access to myVariable2 here?
// 3. can I access to $scope or $controller dependency here?
// 4. can I access to myService dependency here?
},
function (error) {
// do something
}
);
};
//.............some code.................
}
})();
这是我的角度服务的post方法:
function post(data) {
var deferred;
deferred = $q.defer();
$http.post(apiUrl + endpoint + 'post', data).then(function (result) {
deferred.resolve(result);
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
};
答案 0 :(得分:0)
这不取决于承诺。 你无法理解闭包功能。
闭包是一个可以访问父作用域的函数(它不是角度作用域),即使在父函数关闭之后也是如此。 如果您将 myVariable1 或(和) myVariable2 写入函数,则可以看到此varibales,但如果您只是调试它就无法看到它(如果您没有看到它)写不出来。)
回答: 1和2 - 取决于你是如何做到的。 3.范围 - 是的。控制器 - 无法理解什么是意思。 4.与1和2相同的答案。