重新加载更改视图 url

Reload View on change url

我正在使用 angularjs with ui-router (with the helper stateHelperProvider) 将视图和控制器收集到页面中。

但是我的观点没有更新有问题。

我的代码(相关的那个)

config.js

app.config(function($httpProvider, $urlRouterProvider, RestangularProvider, stateHelperProvider) {

    $urlRouterProvider.otherwise("/");

    stateHelperProvider
        .state({
            name: 'division',
            url: '/division/:division',
            views: {
                'main': {
                    templateUrl: '/templates/division.main?uri=' + segment(2),
                    controller: 'DivisionController'
                }
            },
            children: [
                {
                    name: 'appcontent',
                    url: '/content',
                    views: {
                        'content': {
                            templateUrl: "templates/division.appcontent?uri=" + segment(2) + '&root=' + segment(4),
                            controller: 'AppContentController'
                        }
                    },
                    children: [
                        {
                            name: 'root',
                            url: '/:root',
                            views: {
                                'roots': {
                                    templateUrl: "templates/division.appcontent.roots?uri=" + segment(2) + '&root=' + segment(4)
                                }
                            }
                        }
                    ]
                }
            ]
        });
});

我用于链接的代码

// linking to another division
<a ui-sref="division.appcontent({division: 'test2')">test2</a>

// linking to another root
<a ui-sref="division.appcontent.root({division: 'test2', root: 'test')">test2</a>

正在解释

但是我的观点没有更新有问题。

我的视图是包含实际数据的视图,因此我需要它们在更改时重新加载。

比如url中的:divisiontest1,那么模板template/division.main就有一组数据。但是当url中的:divisiontest2时,模板template/division.main又多了一组数据

因此,每当 url 中的 :division 更改时,我需要重新加载模板 template/division.main 以及所有子模板。

但是当 :root 在 url 中发生变化时,我只需要重新加载模板 template/division.appcontent.roots 而不是 template/division.main 模板。

这是否可能,或者我应该更改为仅使用 API 来获取数据。

我真的希望这是有道理的。

备注

segment 是我为从 angular 路由获取一些数据而创建的函数。

感谢 from @ChrisT 我设法使用 templateUrl 作为函数让它工作。

我的新 config.js:

app.config(function($httpProvider, $urlRouterProvider, RestangularProvider, stateHelperProvider) {

    $urlRouterProvider.otherwise("/");

    stateHelperProvider
        .state({
            name: 'division',
            url: '/division/:division',
            views: {
                'main': {
                    templateUrl: function(params) {
                            return '/templates/division.main?uri=' + params.division;
                    },
                    controller: 'DivisionController'
                }
            },
            children: [
                {
                    name: 'appcontent',
                    url: '/content',
                    views: {
                        'content': {
                            templateUrl: function(params) {
                                return 'templates/division.appcontent?uri=' + params.division + '&root=';
                            },
                            controller: 'AppContentController'
                        }
                    },
                    children: [
                        {
                            name: 'root',
                            url: '/:root',
                            views: {
                                'roots': {
                                    templateUrl: function(params) {
                                        return 'templates/division.appcontent.roots?uri=" + params.division + '&root=' + params.root;
                                    }
                                }
                            }
                        }
                    ]
                }
            ]
        });
});