Javascript Angularjs通过resolve函数传递变量
现在我有一个Auth工厂,当我的状态变为Javascript Angularjs通过resolve函数传递变量,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,现在我有一个Auth工厂,当我的状态变为cloud时运行。我正试图将:cloud\u id传递给authCheck()函数,但我不知道如何传递 有人能给我指出正确的方向来改变这一点吗: resolve: { authenticated: authenticated } 对这样的事情: resolve: { authenticated: authenticated(cloud_id) } var authenticated = ['$q', 'Auth', '$rootScope', '$st
cloud
时运行。我正试图将:cloud\u id
传递给authCheck()
函数,但我不知道如何传递
有人能给我指出正确的方向来改变这一点吗:
resolve: { authenticated: authenticated }
对这样的事情:
resolve: { authenticated: authenticated(cloud_id) }
var authenticated = ['$q', 'Auth', '$rootScope', '$stateParams', function ($q, Auth, $rootScope, $stateParams) {
var deferred = $q.defer();
Auth.authCheck($stateParams.cloud_id).then(function(){ deferred.resolve(); }, function(){ deferred.reject(); });
return deferred.promise;
}];
这是我的代码:
.factory('Auth', function($http, $state, $q) {
var factory = { authCheck: authCheck };
return factory;
function authCheck(cloud_id) {
return $http.post('/auth/check', {id:cloud_id});
}
})
.config(function($stateProvider, $urlRouterProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$urlRouterProvider.otherwise('/cloud');
var authenticated = ['$q', 'Auth', '$rootScope', function ($q, Auth, $rootScope) {
var deferred = $q.defer();
Auth.authCheck(cloud_id).then(function(){ deferred.resolve(); }, function(){ deferred.reject(); });
return deferred.promise;
}];
$stateProvider
.state('cloud', {
url: '/cloud/:cloud_id',
templateUrl: 'pages/templates/cloud.html',
controller: 'cloud',
resolve: { authenticated: authenticated }
})
})
您可以像这样注入和使用:
resolve: { authenticated: authenticated(cloud_id) }
var authenticated = ['$q', 'Auth', '$rootScope', '$stateParams', function ($q, Auth, $rootScope, $stateParams) {
var deferred = $q.defer();
Auth.authCheck($stateParams.cloud_id).then(function(){ deferred.resolve(); }, function(){ deferred.reject(); });
return deferred.promise;
}];
请参阅。您可以在解析函数中插入$route并从中取出参数:谢谢@rob,关于
ui-router
和$stateparms
的最后一条评论帮助了很多人!!谢谢你,雷托