Angular,ngRoute代码序列的问题

时间:2014-02-04 14:27:02

标签: angularjs

我正在使用ngRoute来读取url参数。我遇到的问题是代码运行时我无法获取ID。但是,如果尝试将其称为函数,我将从url获取值。

.controller('PageCtrl', function ($scope, $routeParams, Survey) {
    $scope.survey = Survey.get({surveyId: $routeParams.id}); //doesn't work

    this.add = function (pageId, pageIndex) {
        console.log($routeParams.id); //works
    };

    $scope.Page = this;
}

您是否认为在我进行Survey.get()请求时有获取url参数的方法?

2 个答案:

答案 0 :(得分:1)

您可以解决此问题的一种方法是等待$ routeChangeSuccess广播被触发,然后初始化$ scope.survey。

即这样的事情

.controller('PageCtrl', function ($scope,$rootScope, $routeParams) {
    $rootScope.$on('$routeChangeSuccess',function(){
        $scope.survey = Survey.get({surveyId: $routeParams.id}); //doesn't work
    });
    this.add = function (pageId, pageIndex) {
        console.log($routeParams.id); //works
    };

    $scope.Page = this;
}

答案 1 :(得分:0)

很可能在应用程序启动时只调用一次控制器。这就是你的routeconfig尚未设置并返回undefined的原因。您确定要在routeconfig中为视图指定控制器吗?

app.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      when('/home', {
        templateUrl: 'partials/home.html',
        controller: 'HomeCtrl'
      }).
      otherwise({
        redirectTo: '/home'
      });
  }]);