ngRoute的变量'pathname'问题

时间:2017-01-20 20:29:15

标签: angularjs ngroute

我一直在论坛上搜索类似于我的问题,但没有任何运气。但是我找到了一个我要分享的解决方案。

我的问题是,当我想改变路线时,它并没有将我引导到正确的位置。例如我的网址是www.dnndev.me/Projects/Project#/dashboard。我尝试创建一些像这样的链接:

// goes to www.dnndev.me#/tasks.
<a ng-href="#/task"></a>
// same as above however what's between my {{}} is rendered blank.
<a ng-href="{{window.location.pathname}}#/task"></a>

'window.location.pathname'提供了我的网址缺失部分,但它不会呈现。我想过将它存储在一个变量中,但这对我来说似乎不是很有角度。

我尝试使用$ location但它没有路径名属性。我确实遇到了$ location.path('path),它完成了我需要的工作。但是我并不关心每个控制器注入$ location服务。在思考了一下后,我提出了一个想法,即在我的应用程序运行函数中在$ rootscope上创建一个函数,它就能满足我的需求。

# this is written in coffeescript
run = ['$location', '$rootScope', ($location, $rootScope) ->
    $rootScope.route = (path) ->
        $location.path(path)

//html
<button ng-click="$root.route('task')">
</button>

我需要这个的原因是因为'pathname'是可变的。我正在使用DNN框架,这个模块可以放在任何路径上,例如'www.website.com/foo/bar#/dashboard'。

有没有更好的方法来实现这个目标?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用$ location.path来浏览您提供的信息。

$location.path('/task');

此/任务应映射到您的路由中。你不必担心任何事情。如下所示,

$routeProvider.when('/task', {
    templateUrl : "where you wish to navigate", // This should be replaced by your need
    controller : "taskController"
})