【问题标题】:Controller Not Firing When Using URL Param使用 URL 参数时控制器未触发
【发布时间】:2014-03-05 23:24:03
【问题描述】:

我不清楚为什么这不起作用。我的其余代码 - 没有基于 URL 参数的路由工作正常,我已经测试过了。但是,当我尝试在我的 url (base.url/route/:param) 中包含一个 URL 参数时,我的 routeProvider 的 '.otherwise' 元素正在触发,而不是在 routeProvider 中指定的适当控制器。

以下是相关的代码:

模块配置

app.config(function($routeProvider){
//http://docs.angularjs.org/tutorial/step_07
$routeProvider
    .when('/home',
        {
            templateUrl: 'app/partials/home.html',
            controller: 'HomeController'
        })
    .when('/implementation-reference/:ref-scope',
        {
            templateUrl: 'app/partials/topic_tpl.html',
            controller: 'ImplReference'
        })
    .when('/projects',
        {
            templateUrl: 'app/partials/project_list_tpl.html',
            controller: 'Projects'
        })
    .when ('/site-help',
        {
            templateUrl: 'app/partials/site-help.html'
        })
    .otherwise(
        {
        templateUrl: 'app/partials/404.html'
        })
});

模块.控制器

app.controller('ImplReference', function($scope, $routeParams) {
alert('hi');    
});

转到 /implementation-reference/whatever 时,我得到了 404 页面。

任何想法为什么我没有看到我在控制器开头放置的警报,也没有在控制台中看到任何错误?

【问题讨论】:

  • 我认为网址应该是#/implementation-reference/whatever
  • getAllTooicPosts在哪里?
  • @Chandermani,为什么我需要添加该哈希?浏览器中有实际的 URL,但是我在 routeProvider 中的所有其他路由在上面运行良好,它们不需要添加该哈希。
  • 我想我应该清理一下。只需考虑控制器和警报。我已经尝试过相同的方法,删除了工厂依赖项(formsImplReference),但我仍然无法让控制器触发并向我显示该警报。它仍然从 RouteProvider 路由到 .otherwise。
  • 你是如何从 js 或 html 导航到这个 url 的?

标签: angularjs routes


【解决方案1】:

据我所知,问题在于在 RouteProvider 中定义的参数中使用破折号。我原来有:

.when('/implementation-reference/:ref-scope',
    {
        templateUrl: 'app/partials/topic_tpl.html',
        controller: 'ImplReference'
    })

当我把它改成这样时:

.when('/implementation-reference/:ref',
    {
        templateUrl: 'app/partials/topic_tpl.html',
        controller: 'ImplReference'
    })

...突然一切正常。

在向我显示 $route 信息的“否则”添加控制器后,我注意到了这一点。钻完之后,我看到预定义路由上的正则表达式只在破折号之前的部分工作。

几个小时以来,我一直对此感到困惑,无法想象在某处没有更清楚地记录这一点。也许这是一些新手错误(我是新手)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 2013-02-27
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多