Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用URL参数时未触发控制器_Angularjs_Routes - Fatal编程技术网

Angularjs 使用URL参数时未触发控制器

Angularjs 使用URL参数时未触发控制器,angularjs,routes,Angularjs,Routes,我不清楚为什么这不起作用。我的其余代码(无URL参数的路由)运行良好,我已经测试了所有这些。但是,当我尝试在我的URL(base.URL/route/:param)中包含URL参数时,我的routeProvider的“.Others”元素正在激发,而不是routeProvider中指定的相应控制器 以下是相关的代码位: module.config app.config(function($routeProvider){ //http://docs.angularjs.org/tutorial/s

我不清楚为什么这不起作用。我的其余代码(无URL参数的路由)运行良好,我已经测试了所有这些。但是,当我尝试在我的URL(base.URL/route/:param)中包含URL参数时,我的routeProvider的“.Others”元素正在激发,而不是routeProvider中指定的相应控制器

以下是相关的代码位:

module.config

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/什么的时候,我得到了404页面


你知道为什么我看不到控制器开头的警报,也看不到控制台中的任何错误吗?

据我所知,问题在于使用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信息的“否则”添加控制器后,我注意到了这一点。钻过它之后,我看到预定义路径上的正则表达式(带有param)只在破折号之前的部分上工作


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

我认为url应该是
#/implementation reference/which
哪里是
getAllTooicPosts
?@Chandermani,为什么我需要添加那个散列?在浏览器中有实际的URL,但是我在routeProvider中的所有其他路由在上面运行良好,它们不需要添加哈希。我想我应该清理一下。只需考虑控制器和警报。我也尝试过同样的方法,删除了工厂依赖项(FormSimpleReference),但仍然无法让控制器启动并显示该警报。它仍然路由到。否则从RouteProvider。您如何从js或html导航到此url?