$ state и $ stateParams не определены при переходе в дочернее состояние

0

Я сталкиваюсь с такой проблемой: у меня есть следующая государственная иерархия: заказы (аннотация) → services-> new-> promo

        $stateProvider.state("bookings", {
        url: "/bookings",
        abstract: true,
        views: {
            "@": {
                templateUrl: "/Static/routing-template.html"
            },
            "content@bookings": {
                templateUrl: "/Static/scheduler/scheduler.html"
            }
        }
    });
        $stateProvider.state("bookings.services", {
        url: "/services",
        views: {
            "menu@bookings": {
                templateUrl: "/Static/services/services-list.html",
                controller: "ServicesController"
            },
            "content@bookings": {
                templateUrl: "/Static/scheduler/scheduler.html"
            }
        },
        resolve: {
            currencies: function(currencyDataService) {
                return currencyDataService.loadData();
            },
            currentCurrency: function(currencyDataService) {
                return currencyDataService.loadCurrent();
            },
            servicesDataService: function($servicesDataService) {
                return $servicesDataService.loadData();
            }

        }
    });
        $stateProvider.state("bookings.services.new", {
        url: "/new/",
        views: {
            "content@bookings": {
                templateUrl: "/Static/services/add-edit-service.html",
                controller: "ServiceAddEditController as controller"
            }
        },
        params: {
            serviceId: 0,
            //to restore state when back from promo setup tab, null when normally add new service 
            serviceModel: null
        }

    });
    $stateProvider.state('bookings.services.new.promo', {
        url: "promo",
        views: {
            "content@bookings": {
                templateUrl: "/Static/services/promo-tab.html",
                controller: "PromoSetupController as promo"
            }
        },
        params: {
            serviceModel: {}
        }
    });

Для трех первых шагов он работает нормально. Но когда я пытаюсь перейти к promo состоянию, инициализация контроллера, но $ stateParams и $ state не undefined. PromoControllerCode:

angular.module("CommandCenterApp")
.controller("PromoSetupController", [
    function($state, $stateParams) {
        var self = this;
        self.model = $stateParams.serviceModel;
        console.log("Model:", self.model);
    }
]);

И как я иду в это состояние:

 <p ui-sref="bookings.services.new.promo({serviceModel:controller.typeModel})" class="fake-link hidden-sm hidden-xs">Set up promo codes</p>

Есть идеи?

  • 0
    почему вы объявили serviceModel в parent в дочернем маршруте .. лучше держите его в дочернем состоянии ..
  • 0
    должен ли url для promo также начинаться с косой черты ( / ) - как url: "/promo", ,?
Показать ещё 1 комментарий
Теги:
angular-ui-router

1 ответ

2
Лучший ответ

это синтаксис контроллера. либо уберите скобки:

angular.module("CommandCenterApp")
  .controller("PromoSetupController", 
    function($state, $stateParams) {
      var self = this;
      self.model = $stateParams.serviceModel;
      console.log("Model:", self.model);
  }
);

или добавить правильный синтаксис:

angular.module("CommandCenterApp")
  .controller("PromoSetupController", ['$state', '$stateParams',
    function($state, $stateParams) {
      var self = this;
      self.model = $stateParams.serviceModel;
      console.log("Model:", self.model);
    }
]);
  • 0
    Это хороший глаз .. +1
  • 0
    Да .... ты прав.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню