私はAngularJSとRESTを研究しています。コードサンプルでは、認証機能で繰り返し単語callback
が使用されています。 コールバックはJavaScriptまたはAngularのキーワードですか?または、callback
はこのコードで作成されたカスタム変数ですか? callback
はどのようにして以下のコードで動作しますか?グーグルcallback
とAngularJSは使用可能な結果を生成していません。 The code for the AngularJS module in question can be read at this linkには、サンプルアプリのすべてのコードも含まれています。AngularJSのコールバックがRESTサービスをどのように呼び出しますか?
angular.module('auth', []).factory('auth',
function($rootScope, $http, $location) {
enter = function() {
if ($location.path() != auth.loginPath) {
auth.path = $location.path();
if (!auth.authenticated) {
$location.path(auth.loginPath);
}
}
}
var auth = {
authenticated : false,
loginPath : '/login',
logoutPath : '/logout',
homePath : '/',
path : $location.path(),
authenticate : function(credentials, callback) {
var headers = credentials && credentials.username ? {
authorization : "Basic "
+ btoa(credentials.username + ":"
+ credentials.password)
} : {};
$http.get('user', {
headers : headers
}).success(function(data) {
if (data.name) {
auth.authenticated = true;
} else {
auth.authenticated = false;
}
callback && callback(auth.authenticated);
$location.path(auth.path==auth.loginPath ? auth.homePath : auth.path);
}).error(function() {
auth.authenticated = false;
callback && callback(false);
});
},
clear : function() {
$location.path(auth.loginPath);
auth.authenticated = false;
$http.post(auth.logoutPath, {}).success(function() {
console.log("Logout succeeded");
}).error(function(data) {
console.log("Logout failed");
});
},
init : function(homePath, loginPath, logoutPath) {
auth.homePath = homePath;
auth.loginPath = loginPath;
auth.logoutPath = logoutPath;
auth.authenticate({}, function(authenticated) {
if (authenticated) {
$location.path(auth.path);
}
})
// Guard route changes and switch to login page if unauthenticated
$rootScope.$on('$routeChangeStart', function() {
enter();
});
}
};
return auth;
});
追加情報::@ okonykの応答に基づいて
、私が呼び出しを別のモジュールからコードを含めています。ここ
は、モジュールのコード自体でありますauth.authenticate()関数:$scope.login = function() {
auth.authenticate($scope.credentials, function(authenticated) {
if (authenticated) {
//do some stuff
$scope.error = false;
} else {
$scope.error = true;
}
})
}
login()
からauth.authenticate($scope.credentials, function(authenticated)
への呼び出しはどのように機能しますか? function(authenticated)
パラメータが、auth.authenticate()
の機能を決定するブール値を送信していますか?もしそうなら、あなたは明白になりますか?私は一緒にそれを作ることができます。たとえば、trueはコールバックを実行することを示し、falseはコールバックを実行するためのメモを示すかもしれませんが、説明するのに役立ちます。 You can read the code in the sample app for the other module with the login()
method by clicking on this link。
これで 'callback'はどのように上のコードで動作しますか?例えば、(残りの部分の) 'コールバック&&コールバック(偽);'? – CodeMed
'callback && callback(false);' - は、 'callbackがパラメータとして渡された場合、' false'をパラメータとして渡して実行するよりも、 'を意味する略語です。 – oKonyk
ありがとう。 OPの最後に、auth.authenticate()メソッドがどのように呼び出されたかを示すコードを追加しました。これには、githubのサンプルアプリケーションの呼び出しコードへのリンクも含まれています。 'navigation.login()'関数の呼び出しコードが 'auth.authenticate()'関数でどのように動作するのか説明しますか?具体的には、それは真偽値を2番目のパラメータとして送信していますか?真偽はどこから来たのですか?真偽は 'auth.authenticate()'の動作にどのように影響しますか?この質問はgithubコードの範囲が限られていますが、私はまだ部分的にしか理解できないような気がします。 – CodeMed