angular.js маршрутизация и состояние
Я пытаюсь изменить стандартный пользовательский модуль meanjs. Я добавил простой маршрут:
state('users', {
url: '/users/:username',
templateUrl: 'modules/users/views/view-profile.client.view.html'
});
И на мой взгляд:
data-ng-controller="ViewProfileController" data-ng-init="findUser()"
Я также ввел $stateParams в мой контроллер. Так по моему ViewProfileController
- findUser
функция, когда я пишу это:
console.log($stateParams.username)
Я ожидаю получить параметр имени пользователя. Но это возвращается undefined
,
Когда я установил маршрут таким образом,
state('users', {
url: '/users/:username',
template: function ($stateParams){
return $stateParams.username;
}
});
возвращает имя пользователя. Я не знаю, что не так или отсутствует. Есть идеи?
редактировать: это был мой полный код контроллера
'use strict';
angular.module('users').controller('ViewProfileController', ['$scope', '$http', '$stateParams', '$location', 'Users', 'Authentication',
function($scope, $http, $location, Users, Authentication, $stateParams) {
$scope.user = Authentication.user;
$scope.findUser = function () {
console.log($stateParams);
...
};
}
]);
2 ответа
Решение
Ваши зависимости не совпадают - список зависимостей должен соответствовать параметрам в функции контроллера в том же порядке:
'use strict';
angular.module('users')
.controller('ViewProfileController', ['$scope', '$http', '$stateParams', '$location', 'Users', 'Authentication',
function($scope, $http, $stateParams, $location, Users, Authentication) {
$scope.user = Authentication.user;
$scope.findUser = function () {
console.log($stateParams);
};
}
]);
Я должен использовать контроллер вместо шаблона.
Замените в своем коде template:
к следующему фрагменту:
controller: function($stateParams){
console.log('username: '+$stateParams.username);
}