我有一个url正在通过Rails传递到我的Angular代码中。但是,当我尝试在url中选取一个参数时,它显示为空白。有人能帮我吗?
示例url:http://localhost:3000/events/event1
Plnkr:http://plnkr.co/edit/yG8wAZHhgPtH2PBFzql3?p=preview
角度:
eventsApp = angular.module('EventsApp', ['ngRoute'])
eventsApp.config [
'$routeProvider'
'$locationProvider'
($routeProvider, $locationProvider) ->
$locationProvider.html5Mode(true)
$routeProvider.when '/events/:eventName',
templateUrl: '../../views/events/events.html.erb'
controller: 'EventsCtrl'
return
]
eventsApp.controller('EventsCtrl', [
'$scope'
'$routeParams'
($scope, $routeParams) ->
console.log($routeParams.eventName) # shows up as undefined
$scope.greeting = $routeParams.eventName
])HTML:
events.html.erb
<div>
{{greeting}}
</div>application.html.erb (总体布局)
<div id="content" ng-app="EventsApp">
<div ng-view></div>
<%= yield %>
</div>编辑:按照建议,我已经将ng-app和ng-view移到了布局中,并且只保留了events.html.erb中的div
发布于 2015-07-02 15:40:18
如果Karaxuna指出的错误仍然给您空的结果,可能是因为$routeParams的异步操作
加载$routeParams通常需要一些时间。它正在异步加载。当您尝试使用它时,它可能还没有准备好,并且仍然是空的。一种方法是,在路由就绪时创建事件侦听器。
$scope.$on('$routeChangeSuccess', function() {
console.log($routeParams.eventName);
});发布于 2015-07-02 15:32:28
这是因为您在ng-controller指令中包含了控制器,而不是ng-view。必须是这样的:
<body ng-app="EventsApp">
<div ng-view></div>
</body>在events.html.erb中
<div>
{{greeting}}
</div>https://stackoverflow.com/questions/31178033
复制相似问题