首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular $routeParams为空

Angular $routeParams为空
EN

Stack Overflow用户
提问于 2015-07-02 15:23:18
回答 2查看 761关注 0票数 4

我有一个url正在通过Rails传递到我的Angular代码中。但是,当我尝试在url中选取一个参数时,它显示为空白。有人能帮我吗?

示例url:http://localhost:3000/events/event1

Plnkr:http://plnkr.co/edit/yG8wAZHhgPtH2PBFzql3?p=preview

角度:

代码语言:javascript
复制
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

代码语言:javascript
复制
    <div>
        {{greeting}}
    </div>

application.html.erb (总体布局)

代码语言:javascript
复制
<div id="content" ng-app="EventsApp">
        <div ng-view></div>
        <%= yield %>
    </div>

编辑:按照建议,我已经将ng-appng-view移到了布局中,并且只保留了events.html.erb中的div

EN

回答 2

Stack Overflow用户

发布于 2015-07-02 15:40:18

如果Karaxuna指出的错误仍然给您空的结果,可能是因为$routeParams的异步操作

加载$routeParams通常需要一些时间。它正在异步加载。当您尝试使用它时,它可能还没有准备好,并且仍然是空的。一种方法是,在路由就绪时创建事件侦听器。

代码语言:javascript
复制
$scope.$on('$routeChangeSuccess', function() {
  console.log($routeParams.eventName);
});
票数 3
EN

Stack Overflow用户

发布于 2015-07-02 15:32:28

这是因为您在ng-controller指令中包含了控制器,而不是ng-view。必须是这样的:

代码语言:javascript
复制
<body ng-app="EventsApp">
    <div ng-view></div>
</body>

events.html.erb

代码语言:javascript
复制
<div>
    {{greeting}}
</div>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31178033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档