@DKit

Почему не срабатывает контроллер?

Доброго времени суток! Рекомендовали ваш ресурс. Надеюсь на понимание и доброжелательность.

Столкнулся вот с какой проблемой.

В ангуляр использую ui-router.

.state('editRole', {
                    url: '/roles/:id/edit',
                    templateUrl: '../views/RoleManagement/role-edit.html',
                    controller: 'RoleController as role'
                })


в шаблоне
<a class="btn btn-danger"  ng-click="role.deleteRole(current_role.id, $index)">Delete</a>
      <a class="btn btn-warning" ui-sref="editRole({id:current_role.id})">Edit</a>
      <a class="btn btn-warning" ng-click="role.editRole(current_role.id)">Edit2</a>


Так вот. ui-sref генерирует ссылку. Перехожу. Но функция в контроллере не срабатывает.
Delete и Edit2 срабатывают. Полагаю, что все дело в role. Но если его добавля и делаю
ui-sref="role.editRole({id:current_role.id})">Edit, то же получаю ошибку state.

код из контроллера
(function() {

    'use strict';

    angular
        .module('authApp')
        .controller('RoleController', RoleController);

    function RoleController($http, $auth, $state, $stateParams, $rootScope, Role) {

        var vm = this;
    vm.test = function() {
        console.log('lala');
    }

     vm.editRole = function(id) {
        console.log(id);
         Role.edit(id)
            .success(function(data) {
                vm.roleData=data;
                console.log(vm.roleData);
        });
    }

Как можно было бы решить этот вопрос?

И попутно.
Вот эти вот RoleController as role? Может неверно использую? В шаблонах все захламляется вот этими добавками role.

п.с. функция test срабатывает дважды при попадания на данный роут((
гран мерси ин эдванс
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 1
Предположу, что в sref можно передавать только состояния с параметрами или без https://github.com/angular-ui/ui-router/wiki/Quick... Возможно ваш метод editRole в контроллере каким-то образом конфликтует с состоянием у которого такое же имя.
Попробуйте в контроллере вызывать $state.go(...) при клике на ссылку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы