加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 基于路由组动态加载控制器

发布时间:2020-12-17 09:28:55 所属栏目:安全 来源:网络整理
导读:可以根据路由组动态加载控制器,js文件和模板吗? Psuedo代码不起作用: $routeProvider.when('/:plugin',function(plugin) { templateUrl: 'plugins/' + plugin + '/index.html',controller: plugin + 'Ctrl',resolve: { /* Load the JS file,from 'plugins/
可以根据路由组动态加载控制器,js文件和模板吗? Psuedo代码不起作用:
$routeProvider.when('/:plugin',function(plugin) {
  templateUrl: 'plugins/' + plugin + '/index.html',controller: plugin + 'Ctrl',resolve: { /* Load the JS file,from 'plugins/' + plugin + '/controller.js' */ }
});

我看到很多这样的问题,但没有一个加载基于路由组的js文件/控制器.

我设法解决了由@calebboyd,http://ify.io/lazy-loading-in-angularjs/和 http://weblogs.asp.net/dwahlin/archive/2013/05/22/dynamically-loading-controllers-and-views-with-angularjs-and-requirejs.aspx启发的

使用http://dustindiaz.com/scriptjs

app.js

app.config(function($controllerProvider,$compileProvider,$filterProvider,$provide) {
  app.register = {
    controller: $controllerProvider.register,directive: $compileProvider.directive,filter: $filterProvider.register,factory: $provide.factory,service: $provide.service
  };
});

然后我注册“按组控制器”路由.

$routeProvider.when('/:plugin',{

  templateUrl: function(rd) {
    return 'plugin/' + rd.plugin + '/index.html';
  },resolve: {
    load: function($q,$route,$rootScope) {

      var deferred = $q.defer();

      var dependencies = [
        'plugin/' + $route.current.params.plugin + '/controller.js'
      ];

      $script(dependencies,function () {
        $rootScope.$apply(function() {
          deferred.resolve();
        });
      });

      return deferred.promise;
    }
  }
});

controller.js

app.register.controller('MyPluginCtrl',function ($scope) {
  ...
});

的index.html

<div ng-controller="MyPluginCtrl">
  ...
</div>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读