2015-03-06 4 views
1

У меня есть контроллер, с которым я пытаюсь получить доступ к параметрам при использовании $ routeParams, но когда я проверяю значение с помощью console.log, делается ссылка на lodash.

(function() { 
    'use strict'; 

    angular 
    .module('card-info.controller', ['ui.bootstrap']) 
    .controller('CardInfoController', CardInfoController); 

    CardInfoController.$inject = [ 
    'fetchCard', 
    'fetchSet', 
    '_', 
    '$routeParams', 
    '$filter', 
    '$location' 
    ]; 

    function CardInfoController (fetchCard, _, $routeParams, $filter, $location) { 
    var vm = this; 
    var id = $routeParams.id; 

    fetchCard.getCardInfo(id).then(function(d) { 
     displayCard(d); 
    }); 

    ... 

    } 
)}() 

Вот ссылка на controller. Событие роутера запускается, и URL-адрес меняется правильно. Кажется, что что-то не так в моих инъекциях.

ответ

2

Существует неправильное смещение между закачиваемым значением и именем это

вы вводили fetchSet но вы не использовали его в подписи функции

Это

function CardInfoController (fetchCard, _, $routeParams, $filter, $location) { 

Должно быть

function CardInfoController (fetchCard, fetchSet, _, $routeParams, $filter, $location) { 

И космический порядок великой подписи восстанавливается

+0

Спасибо так много, что это было. Есть ли простой способ избежать этого в будущем, я просто должен быть более прилежным в своем наблюдении за тем, какие инъекции выполняются? –

+0

Тестирование модулей предназначено для того, чтобы этого избежать, я предлагаю вам взглянуть на карму и жасмин, которые являются хорошими инструментами единичных тестов (по крайней мере, когда я развивался ежедневно с помощью angularjs, я мог бы устареть) – axelduch

1

$routeParams является службой ngRoute модуля, вы должны добавить его в модуле декларацию:

angular 
    .module('card-info.controller', ['ui.bootstrap', 'ngRoute']) 
    .controller('CardInfoController', CardInfoController); 

Источник: $routeParams

Смежные вопросы