Я пытаюсь понять, почему некоторые из вложенных зависимостей (или другие объявленные переменные) в моем контроллере недоступны внутри обратного вызова успеха/ошибки функции «then» отложенного обещания.Что такое лексический охват обратного вызова успеха «тогда» функции углового обещания?
Я искал в угловой документации по $ 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.................
}
})();
А вот пост метод моей угловой службы:
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;
};
Просто отлаживать. Это легко – Mediator
@ Mediator Хе-хе, я уже это сделал, но я хотел бы понять теорию. BTW, при отладке я могу получить доступ только к зависимостям $ scope и myService (а не от $ controller и других переменных). – DiegoA29
1-3 ответ да, не уверен, что вы упоминаете в 4-й точке, '$ http.post' уже возвращает обещание, прекратите обертывать его' deferred.promise' ... – mido