是否可以在angularjs中加载指定文件名的自定义控制器?
这样的事情:
var demo = angular.module('demo', ['ngRoute', 'ui.bootstrap', 'demo.filters', 'demo.services', 'demo.directives', 'demo.controllers'])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/custom',
{
templateUrl: 'partials/custom.html',
controller: customController.js
});
});
答案 0 :(得分:3)
通过需要js的方式,你需要像这样设置你的应用程序:
var demo = angular.module('demo', ['ngRoute', 'demo.filters', 'demo.services', 'demo.directives']);
demo.config(['$routeProvider',
function($routeProvider) {
var _routes = ['/custom', '/custom2'];
_routes.map(function(route) {
var _cntrlName = route.slice(1, route.length);
require([_cntrlName + "Controller"], function(controller) {
$routeProvider.when(route, {
templateUrl: '.' + route + '.html',
controller: controller
});
});
});
}
]);
您的控制器代码必须如下所示:
define(function(require, exports, module) {
function controller($scope) {
$scope.testvar = "test 1!";
}
module.exports = controller;
});
的傻瓜
答案 1 :(得分:2)
Angular无法加载JS文件,但您可以使用RequireJS
执行此操作var demo = angular.module('demo', ['ngRoute', 'ui.bootstrap', 'demo.filters', 'demo.services', 'demo.directives'])
demo.config(['$routeProvider', function ($routeProvider) {
var _routes = ['/custom', '/somepage']
_routes.map(function(route){
var _cntrlName = route.slice(1, route.length);
$routeProvider.when(route,{
templateUrl: 'partials' + route;
controller: require('./' + _cntrlName + 'Controller.js');
})
})
});
控制器文件:
(function(){
function customController($scope){
console.log($scope);
};
return 'customController';
)()
答案 2 :(得分:0)
而不是指定文件放置控制器的名称。 但是,您应该从部分中删除ng-controller指令。
答案 3 :(得分:0)
是。您可以将其他控制器范围加载到不同的控制器中。
示例代码:
var mode = angular.module()。config(function(){
controller(“controllerName”,{$ scope:scope}); //此行非常重要
});