$routeProvider 从数据库路由参数

$routeProvider route params from database

我想用数据库中的数据加载填充路由参数。

比如我有

$routeProvider.when('/:param1/:param2', loadParams())

和loadParams函数

function loadParams() {
    var data = {
        path: window.location.pathname
    };
    $.ajax({
        type: 'POST',
        url: 'getRouteParams',
        data: data,
        success: function(data, status) {
            var attributes = {};
            attributes.controller = data.controller;
            attributes.templateUrl = data.templateUrl;
            return attributes;
        }
    });
}

但是这个函数给我一个错误

Cannot read property 'reloadOnSearch' of undefined

你在 routeprovider 中使用 reloadsearch 属性 的地方,我在你的代码中找不到。 [reloadOnSearch=true] - {boolean=} - 当只有 $location.search() 或 $location.hash() 改变时重新加载路由。

如果选项设置为 false 并且浏览器中的 url 发生变化,则 $routeUpdate 事件将在根范围内广播。

我自己回答

解决方案是停用异步并将 return 放在 "success"

之外
function loadParams() {
    var data = {
        path: window.location.pathname
    };
    var attributes = {};
    $.ajax({
        type: 'POST',
        url: 'getRouteParams',
        data: data,
        async: false,
        success: function(data, status) {
            attributes.controller = data.controller;
            attributes.templateUrl = data.templateUrl;
        }
    });
    return attributes;
}