なぜ私のコントローラに注入された依存関係(または他の変数が宣言されている)が遅延プロミスの '当時'関数の成功/エラーコールバックで利用できないのかを理解しようとしています。角度の約束の「当たった」関数の成功コールバックの語彙的な範囲は何ですか?
ここでは、$ 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;
};
ただデバッグしてください。それは簡単です – Mediator
@メディエイターHehe私はすでにそれをやったが、私はその背後にある理論を理解したいと思います。ところで、私は$ scopeとmyServiceの依存関係($ controllerと他の変数ではない)にしかアクセスできないデバッグ時に。 – DiegoA29
1-3回答はyesです.4番目のポイントで何を参照しているのかわかりません。 '$ http.post'はすでに約束を返し、' deferred.promise'でそれをラップしません。 – mido