Javascript 角度用户界面路由器的解析
在我的角度示例路线中,我尝试:Javascript 角度用户界面路由器的解析,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,在我的角度示例路线中,我尝试: (function(angular){ 'use strict'; angular .module('appRouter',['ui.router']) .controller('routerCtrl',function(myResolveServ,resolveData){ console.log(resolveData); }) .service('my
(function(angular){
'use strict';
angular
.module('appRouter',['ui.router'])
.controller('routerCtrl',function(myResolveServ,resolveData){
console.log(resolveData);
})
.service('myResolveServ',function($http){
this.getResolveData = function($http){
var root = 'https://jsonplaceholder.typicode.com';
return $http.get(root+'/posts/1').then(function(response){
return response.data;
});
}
})
.config(function($stateProvider,$urlRouterProvider){
$stateProvider
.state('settings.profile',{
url:'/profile',
templateUrl:'templates/profile.html'
})
.state('settings.account',{
url:'/account',
templateUrl:'templates/account.html',
controller:'routerCtrl',
controllerAs:'vm',
resolve:{
resolveData :function(myResolveServ){
var data = myResolveServ.getResolveData();
}
}
});
$urlRouterProvider.otherwise('/settings/profile');
});
})(window.angular);
但是这个代码不起作用。我无法导航到帐户页面URL
/settings/account
控制台中的错误不明显
我做错了什么
更新
我知道这是可行的:
resolve:{
resolveData : function($http){
var root = 'https://jsonplaceholder.typicode.com';
return $http.get(root+'/posts/1').then(function(response){
return response.data;
});
}
}
您需要返回路由
设置解析中的数据。帐户
resolveData: function(myResolveServ) {
return myResolveServ.getResolveData();
}
很难说为什么,你应该注意ui路由器的错误。
粘贴下面的代码并查找错误
var $rootScope = angular.element(document.querySelectorAll("#home")[0]).injector().get('$rootScope');
$rootScope.$on('$stateChangeStart',function(event, toState, toParams, fromState, fromParams){
console.log('$stateChangeStart to '+toState.to+'- fired when the transition begins. toState,toParams : \n',toState, toParams);
});
$rootScope.$on('$stateChangeError',function(event, toState, toParams, fromState, fromParams){
console.log('$stateChangeError - fired when an error occurs during transition.');
console.log(arguments);
});
$rootScope.$on('$stateChangeSuccess',function(event, toState, toParams, fromState, fromParams){
console.log('$stateChangeSuccess to '+toState.name+'- fired once the state transition is complete.');
});
$rootScope.$on('$viewContentLoaded',function(event){
console.log('$viewContentLoaded - fired after dom rendered',event);
});
$rootScope.$on('$stateNotFound',function(event, unfoundState, fromState, fromParams){
console.log('$stateNotFound '+unfoundState.to+' - fired when a state cannot be found by its name.');
console.log(unfoundState, fromState, fromParams);
});`
我试过了,但它并没有登录到控制台,这是在控制器中发生的。不起作用。服务还可以吗?控制器应该记录数据吗?很难说…如果控制台上没有记录错误,通常只是解决方案没有返回任何导致控制器挂起且没有视图呈现的内容…你说“转到URL/设置/帐户”-这到底在哪里?settings.account是状态,其URL为/account,那么哪个是/settings/account?