Bạn có thể truy cập $stateParams bình thường trong một Controller, nhưng làm thế nào để truy cập $stateParams trong Service ?
Nếu bạn đã thử giống với cách khi làm việc với Controller thì các param lấy từ $stateParams sẽ trả về 1 giá trị undefined. Đây là điều ta hoàn toàn ko muốn 😀

Do không thể “tiêm” $stateParams vào trong một Service trực tiếp được mà bạn cần phải làm việc này gián tiếp thông qua phương thức resolve khi thiết lập UI Router, như sau:

      // Live routes
      $stateProvider
        .state('meetingui', {
          url: '/:roomName',
          templateUrl: '/templates/meetingui/live.html',
          controller: 'LiveController',
          resolve: {
            dummy1: ['$stateParams', 'RoomState', function ($stateParams, RoomState) {
              RoomState.roomName = $stateParams.roomName;
              RoomState.serverApp = $stateParams.roomName;
            }]
          }
        });

Vậy là giờ đây, trong các controller hoặc service khác đều có thể đọc được thông tin cấu hình roomName trong Service RoomState.

About The Author