我正在尝试使用ocLazyLoad
动态加载控制器:
$ocLazyLoad.load('./ctrls/login.js');
但是我得到这个错误说:
名称为' loginCtrl'的控制器没有注册。
angular.module('optimusApp')
.controller('loginCtrl', function ($scope, $rootScope, $location, $http) {});
app.js
angular.module("optimusApp", ['ngRoute', 'oc.lazyLoad']);
angular.module('optimusApp')
.controller('globalCtrl', function ($rootScope, $location, $http, $routeParams, $ocLazyLoad) {
$ocLazyLoad.load('./ctrls/login.js');
});
答案 0 :(得分:0)
我使用ng-if
使其工作<强> app.js 强>
var optimusApp = angular.module("optimusApp", ["ngRoute", "oc.lazyLoad"])
.controller("globalCtrl", function ($rootScope, $location, $http, $routeParams, $ocLazyLoad) {
$ocLazyLoad.load("./js/app/login.js").then(function() {
console.log("loginCtrl loaded");
$rootScope.loginActive = true;
}, function(e) {
console.log("error");
});
});
<强> login.js 强>
optimusApp.controller('loginCtrl', function ($scope, $rootScope, $location, $http) {
});
<强> HTML 强>
<div ng-if="loginActive" ng-controller="loginCtrl">
</div>
如果在加载JS之前 ng-controller 在页面中,基本上会出现“注册错误”。 所以ng-if是一个解决方案,或者我看到你有ngRoute。因此,您可以设置ocLazyLoad以在进入特定状态时加载控制器。