загрузка модулей и файлов фабрик с использованием маршрутизации angular ui и ocLazyLoad

i', используя маршрутизацию angular ui с ocLazyLoad для загрузки файлов приложений в соответствии с выбранной статистикой, как показано в следующем коде.

моя проблема:

когда я загружаю новое состояние и иногда нажимаю кнопку "Обновить", фабрики не инициализируются - я думаю, это потому, что файлы не полностью загружены до инициализации контроллера-

я также пытался объединить все файлы в одной функции ocLazyLoad и использовать serie : true, но не работает

это правильное использование ocLazyLoad

у меня есть следующие модули

  angular.module('app', [ "oc.lazyLoad"]);
  angular.module("app.inventory", []);
  angular.module("app.sales", []);

а вот маршрут

.state("invoicesAddEdit", {
          url: "/invoice/:invoiceId",
          templateUrl: "app/components/sales/invoice/views/invoiceAddEdit.view.html",
          controller: "InvoiceAddEditController",

          resolve: {
              invoiceId: ['$stateParams', function ($stateParams) {
                  return $stateParams.invoiceId;
              }],
              settings: ['$ocLazyLoad', function ($ocLazyLoad) {
                  return $ocLazyLoad.load({
                      name: "app.settings",
                      files: [
                              "app/components/settings/settings.module.js",
                              "app/components/settings/currency/services/currency.factory.js",
                              "app/components/settings/deliveryMan/services/deliveryMan.factory.js",

                      ]
                  })
              }],

              inventory: ['$ocLazyLoad', function ($ocLazyLoad) {
                  return $ocLazyLoad.load({
                      name: "app.inventory",
                      files: [
                              "app/components/inventory/inventory.module.js",
                              "app/components/inventory/customer/services/customer.factory.js",
                              "app/components/inventory/store/services/store.factory.js",
                              "app/components/inventory/product/services/product.factory.js",

                      ]
                  })
              }],
              purchasing: ['$ocLazyLoad', function ($ocLazyLoad) {
                  return $ocLazyLoad.load({
                      name: "app.purchasing",
                      files: [
                              "app/components/purchasing/purchasing.module.js",
                              "app/components/purchasing/purchaseOrder/services/purchaseOrder.factory.js",

                      ]
                  })
              }],
              sales: ['$ocLazyLoad', function ($ocLazyLoad) {
                  return $ocLazyLoad.load({
                      name: "app.sales",
                      files: [
                              "app/components/sales/sales.module.js",
                              "app/components/sales/representative/services/representative.factory.js",

                              "app/components/sales/invoice/services/invoice.factory.js",
                              "app/components/sales/invoice/controllers/invoiceAddEdit.controller.js",

                      ]
                  })
              }],
          }
      })

person Hager Aly    schedule 18.08.2015    source источник


Ответы (1)


Попробуйте внедрить oCLazy Load как deps и вставить необходимые файлы перед определенным тегом в html, как показано ниже:

      resolve: {
          invoiceId: ['$stateParams', function ($stateParams) {
              return $stateParams.invoiceId;
          }],
          deps: ['$ocLazyLoad', function ($ocLazyLoad) {
              return $ocLazyLoad.load({
                 name: "app.settings",
                 insertBefore: '#ng_load_plugins_before', 
                 files: [
                          "app/components/settings/settings.module.js",
                          "app/components/settings/currency/services/currency.factory.js",
                          "app/components/settings/deliveryMan/services/deliveryMan.factory.js",

                  ]
              })
          }],

Добавьте следующую ссылку в заголовок html-страницы или представления:

  <link id="ng_load_plugins_before"/>
person Ahmed Bebars    schedule 18.08.2015