2015-05-18 2 views
0

Я новичок в AngularJS, и я пытаюсь использовать $ routeParams в своем коде, просматривая предыдущие ответы здесь, я убедился, что добавил «$ routeParams» как часть моей инъекции массива и функция как я, так и я не использую модуль ui-router. Тем не менее, я все еще не могу определить, когда я пытаюсь его зарегистрировать.

Мой Угловая App выглядит следующим образом:

var RAFITOAPP = RAFITOAPP || {} 

RAFITOAPP.app = angular.module('app', [ 
    'ngRoute' 
]).config(['$routeProvider', function($routeProvider) { 
    $routeProvider. 
    when("/line/:userAccountId", {templateUrl: "assets/partials/line.html", controller: "LineController"}). 
    when("/floormap", {templateUrl: "assets/partials/floormap.html", controller: "MapController"}). 
    when("/report", {templateUrl: "assets/partials/reports.html", controller: "ReportController"}). 
    when("/addNew", {templateUrl: "assets/partials/add_new.html", controller: "addNewController"}). 
    when("/profile", {templateUrl: "assets/partials/account.html", controller: "accountSettingsController"}). 
    otherwise({redirectTo: '/line'}); 
}]); 

Мой контроллер выглядит следующим образом:

RAFITOAPP.app. 

controller('LineController', ['$scope','$rootScope','$routeParams', function($rootScope, $scope, $location, $routeParams) { 
    $scope.$on('$viewContentLoaded', function() { 
     console.log($routeParams); 
     change('line'); 
     if(control != 1){ 
      setTimeout(function() { 
       script1fire(); 
      } , 100); 
      control = 1; 
     } 
    }) 
}]); 

Пожалуйста посоветуйте на что мне не хватает? Любая помощь будет оценена очень сильно. Если вы хотите увидеть HTML-страницу, вызывающую проблему, это

+0

Попробуйте этот контроллер ('LineController', [ '$ области действия', '$ rootScope', '$ местоположение', '$ routeParams' , функция ($ scope, $ rootScope, $ location, $ routeParams) {ваш код}); Также вместо $ scope.on попробуйте $ rootScope.on – Inventillect

+0

вы уверены, что событие $ viewContentLoaded запущено? потому что вы прикрепляете его к $ scope вместо $ rootScope –

+0

@Inventillect Я попробовал то, что вы предложили, и все еще то же самое – alyn000r

ответ

6

Аргументы зависимостей и параметров вашего массива не совпадают. это должно быть что-то вроде этого '['$rootScope', '$scope', '$location', '$routeParams', function($rootScope, $scope, $location, $routeParams)' вместо '['$scope','$rootScope','$routeParams', function($rootScope, $scope, $location, $routeParams)'

RAFITOAPP.app 
 
    .controller('LineController', ['$rootScope', '$scope', '$location', '$routeParams', 
 
    function($rootScope, $scope, $location, $routeParams) { 
 
     $scope.$on('$viewContentLoaded', function() { 
 
     console.log($routeParams); 
 
     change('line'); 
 
     if (control != 1) { 
 
      setTimeout(function() { 
 
      script1fire(); 
 
      }, 100); 
 
      control = 1; 
 
     } 
 
     }) 
 
    } 
 
    ]);

+0

Если я добавлю $ location к моей инъекции массива, это действительно вызывает эту ошибку: TypeError: $ scope. $ On не является функцией – alyn000r

+0

Вы верны Спасибо за ответ – alyn000r