小编Nik*_*orb的帖子

如何将服务注入AngularJS的UI-Router templateUrl函数?

我正在尝试让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)

javascript state angularjs firebase angular-ui-router

5
推荐指数
1
解决办法
2628
查看次数