我正在尝试让AngularJS的UI-Router选择已定义的状态(即"project"),如果没有匹配,则默认为"root"状态."root"状态应检查远程API(Firebase)并根据结果加载相应的视图.
以下示例未完成以下任一要求:
1)" http://website.com/project "与"root"状态匹配,而不是(先前定义的)"project"状态.
2)"fbutil"未在"templateUrl"函数中定义,并且无法注入.
请帮我解决这些问题.
angular.module('app')
.config(['$stateProvider', '$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('project', {
url: '/project',
views: {
'mainView': {
controller: 'ProjectCtrl as project',
templateUrl: '/views/project.html'
}
}
})
.state('root', {
url: '/:id',
views: {
'mainView': {
templateUrl: function($stateParams, fbutil) {
var ref = fbutil.ref('user_data', id);
ref.once('value', function(dataSnapshot) {
return '/views/' + dataSnapshot.$val() +'.html';
}, function(error) {
return '/views/root.html';
});
}
}
}
})
}
]);
Run Code Online (Sandbox Code Playgroud)