我需要将id从project / id传递给CommentCtrl,当我尝试console.log($routeParams.id)
它返回undefined时...任何人都可以找到我的代码有什么问题?
.config(function($routeProvider) {
$routeProvider.
when('/project/:id', {
controller: 'CommentsCtrl'
}).
otherwise({
redirectTo: '/'
});
})
.controller('CommentsCtrl',function($scope,$http,$routeParams){
$scope.comments = [];
$scope.param = $routeParams.id;
});
更新
在html中,我只是在CommentsCtrl
内有<div ng-view></div>
和CommentsCtrl
这样的模块:
<div ng-controller="CommentsCtrl">
<div ng-view></div>
</div>
答案 0 :(得分:1)
我已将我的评论写入答案以获得更好的解释。
您必须将html结构调整为:
<div>
<div ng-view></div>
</div>
删除ng-controller,因为ngRoute会分配控制器,如配置中所示:
[...]
$routeProvider.
when('/project/:id', {
controller: 'CommentsCtrl'
})
然后,CommentsCtrl会将$ routeParams.id作为参数。
如果您需要一个包装控制器,您必须定义一个不同的包装控制器,例如&#39; AppCtrl&#39;或者其他的东西。但它必须与ngRoute使用的控制器不匹配。
这是我可以为如何使用ngRoute组装的最简单的例子: http://plnkr.co/edit/JSwafRF2AavvlWtsnjus?p=preview
您可以通过修改网址在全屏视图中对其进行测试。到目前为止,我无法在plnkr上运行链接
考虑到我的示例代码,还有一些事情需要提及:
使用plunker,我必须使用哈希(#),因为服务器不允许html5样式链接。对于您的应用,这可能会有所不同,因此您可能会遗漏哈希值。
为简单起见,我已删除路线配置中的项目路径
如果这根本没有帮助,那么如果您提供应用的实时视图可能会有所帮助,因此我可以明确核实什么不起作用或哪些不对。