【问题标题】:Angular UI Router Controller Provider $HTTPAngular UI 路由器控制器提供程序 $HTTP
【发布时间】:2017-04-11 07:33:00
【问题描述】:

我希望在用户登录后,我可以像这样简单地为 Angular UI Router 中的登录视图加载控制器:

 "content@":{
    templateProvider: function($http, $stateParams) {
        return $http({
        method: 'GET',
        url: '/homeV'
      }).then(function successCallback(html) {
        return html.data;
      });
       },
     controllerProvider: function($http, $stateParams) {
        return $http({
        method: 'GET',
        url: '/homeC'
      }).then(function successCallback(html) {
        return html.data;
      });
  }
       }

但控制器不是模板,而且它的工作似乎不像我希望的那样容易。这里有很多关于类似问题的问题,但如果我不需要,我不想使用 Require.js。

Require.js 是唯一的选择吗?如果是这样,我将对此进行试验,但我想先确保我没有遗漏任何东西。

【问题讨论】:

  • 登录成功后要加载js还是html?
  • @Aravind 是的,因为我不想在 SPA 中预先加载一堆只有经过身份验证的用户才需要的逻辑。我希望它是模块化的,并且只有在进入该状态时才为该状态加载控制器。这有意义吗?
  • 您是否正在寻找仅在特定模块运行时动态加载 js 文件的选项?
  • @Aravind 你是什么意思?我想根据用户所处的状态加载它们。如果这不正确,请告诉我。但是如果我必须使用 require.js 之类的东西,我更愿意使用 webpack。
  • 查看 ocLazyLoad:oclazyload.readme.io

标签: angularjs angular-ui-router


【解决方案1】:

正如 Muli 所说,查看 oclazyload。另外,我在post我自己的答案

我使用了两个模块并仅在它们的状态处于活动状态时才注入它们各自的控制器,而我使用了 resolve 选项来做到这一点。像这样的东西

resolve: {
            loadMyCtrl: ['$ocLazyLoad', function ($ocLazyLoad) {
            return $ocLazyLoad.load('someModule.js');
            }]
         }

oclazyload 的文档部分不清楚。也许你可以看看我的 plunker here

【讨论】:

  • 我的状态是嵌套的,它不工作。该文档提到有两个解析,一个用于父级,一个用于子级......但我不明白为什么我真的不想在这种情况下延迟加载,而是在进入子状态时加载。
  • 是的,伙计。我需要更多澄清你的问题!
猜你喜欢
  • 1970-01-01
  • 2018-12-27
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
  • 2013-07-04
  • 2016-11-10
  • 1970-01-01
相关资源
最近更新 更多