使用 ng-view 并按需加载控制器
Using ng-view and loading the controller on demand
我正在使用 ng-view 来尝试重新使用常见的页面元素。可能是我理解有误,不适合放在这里
基本上,我的 html 页面如下所示:
<html>
<head>
<!-- css and js here including index.js -->
</head>
<body ng-app="app" ng-controller="ctrl">
<navigation-bar/>
<div ng-view />
</body>
</html>
这是我的 index.js 的样子
(function () {
angular.module('app', ['ngRoute', 'ngSanitize'], function ($routeProvider) {});
angular.module('app').controller("ctrl", function ($scope, $log, $q, $timeout) {});
angular.module('app').config(["$routeProvider", function ($routeProvider) {
$routeProvider.when("/management", {
templateUrl : "/experiment/management.html",
// Is there a way to load /experiment/managementController.js here?
}
})
]);
})();
我的management.html
<div ng-controller="managementController">
<!-- A bunch of code -->
</div>
和managementController.js(我只想在加载路由时运行)
(function () {
angular.module('app').controller("managementController", [
"$scope", "$sce", "$log", function ($scope, $sce, $log) {
// controller specific code
}
]);
})();
我为什么要这样做?因为我有很多很多潜在的观点和很多潜在的控制者。 (大约 50 个)
这是不可能的还是不是 ng-view 的意图?
如果这不是 ng-view 的意图,在这种情况下有什么可以帮助我的吗?
Take a look at the first example 在文档中。查看 script.js 选项卡。
$routeProvider.when("/management", {
templateUrl : "/experiment/management.html",
controller: 'managementController',
}
如果您的意思是要加载实际文件,take a look at this post
您可以在 angular Js
中使用 resolve
属性,它可以处理动态加载包含目标控制器的脚本,并在加载完成后解析承诺。
例如:
$routeProvider
.when('/management',
{
templateUrl: '/experiment/management.html',
resolve: resolveController('/app/controllers/managementController.js')
});
我正在使用 ng-view 来尝试重新使用常见的页面元素。可能是我理解有误,不适合放在这里
基本上,我的 html 页面如下所示:
<html>
<head>
<!-- css and js here including index.js -->
</head>
<body ng-app="app" ng-controller="ctrl">
<navigation-bar/>
<div ng-view />
</body>
</html>
这是我的 index.js 的样子
(function () {
angular.module('app', ['ngRoute', 'ngSanitize'], function ($routeProvider) {});
angular.module('app').controller("ctrl", function ($scope, $log, $q, $timeout) {});
angular.module('app').config(["$routeProvider", function ($routeProvider) {
$routeProvider.when("/management", {
templateUrl : "/experiment/management.html",
// Is there a way to load /experiment/managementController.js here?
}
})
]);
})();
我的management.html
<div ng-controller="managementController">
<!-- A bunch of code -->
</div>
和managementController.js(我只想在加载路由时运行)
(function () {
angular.module('app').controller("managementController", [
"$scope", "$sce", "$log", function ($scope, $sce, $log) {
// controller specific code
}
]);
})();
我为什么要这样做?因为我有很多很多潜在的观点和很多潜在的控制者。 (大约 50 个)
这是不可能的还是不是 ng-view 的意图?
如果这不是 ng-view 的意图,在这种情况下有什么可以帮助我的吗?
Take a look at the first example 在文档中。查看 script.js 选项卡。
$routeProvider.when("/management", {
templateUrl : "/experiment/management.html",
controller: 'managementController',
}
如果您的意思是要加载实际文件,take a look at this post
您可以在 angular Js
中使用 resolve
属性,它可以处理动态加载包含目标控制器的脚本,并在加载完成后解析承诺。
例如:
$routeProvider
.when('/management',
{
templateUrl: '/experiment/management.html',
resolve: resolveController('/app/controllers/managementController.js')
});