UI-Router ui-sref为当前状态,带有新参数

时间:2016-12-12 16:51:33

标签: javascript angularjs angular-ui-router

我有一个应用程序,其位置设置在更改时更新货币/语言等。这在每个页面上都可见,因为它处于我的父状态。使用以下按钮改变位置时......

<button ui-sref="{location: 'Europe'}">Europe</button>
//(which generate a href of 'href="#/Europe/home"' on my homepage)

应用程序应重新加载当前状态和合适的视图,并使用新的位置参数值重新初始化状态控制器。

位置设置按钮处于我父状态的视图...

.state('root', {
        abstract: true,
        ncyBreadcrumb: {
            skip: true
        },
        url: '/:location',
        views: {

            '@': {
                templateUrl: function(params) {
                    return views + params.location + '/index.html';
                },
                controller: 'MainController as main'
            }

        },
        params: {
            location: null
        }
    })

我的孩子状态看起来像这样......

.state('root.home', {
        url: '/home',
        templateUrl: function(params) {
          return views + params.location + '/home.html';
        }
}

这在我加载的初始页面上运行正常。问题是如果我在主页上加载应用程序(例如),导航到另一个状态然后更改位置,用户将被抛回主页(或最初加载应用程序的任何页面)。

我认为这是因为当我浏览应用时,位置按钮的当前状态和生成的href不会改变以反映当前状态,但我无法解决它。我是如何引用位置按钮的ui-sref中的当前状态(未指定状态并仅更新{}中的参数)的问题?

我可以通过ng-click在我的控制器中执行$ state.go但是我会错过生成的href,这是我们需要的seo。

非常感谢任何解决方案。

0 个答案:

没有答案