gpt4 book ai didi

javascript - 如何在 angular.js 中分别编写 Controller 、服务、路由和模块?

转载 作者:行者123 更新时间:2023-11-28 06:41:55 25 4
gpt4 key购买 nike

我只是尝试使用 lumx Angular Material ,它的 app.js 将所有 Controller 、服务、模块集中在一处。

我试图将它们分开,但它在 lumx 中不起作用,因为在 lumx 中的 index.html 文件中它们包含了 app.js 文件,但如果我必须编写许多 Controller ,我必须如何遵循它?

这里是 lumx 中 app.js 的 github 链接

https://github.com/lumapps/lumX/blob/master/demo/app.js

我已经制作了单独的文件

module.js

var app = angular.module('AppTool', [
'ngRoute',
'lumx',
'hljs',
'Services'
])

controllers/mainCtrl.js

/* global angular */
/* global escape */
/* global console */
'use strict'; // jshint ignore:line

angular.module('AppTool')
.controller('KMController', [ '$scope', KMController]);

function($scope)
{
$scope.check = "The Check";
}

services/mainService.js

angular
.module('AppTool', [])
.service('Sidebar', function()
{
var sidebarIsShown = false;

function toggleSidebar()
{
sidebarIsShown = !sidebarIsShown;
}

return {
isSidebarShown: function()
{
return sidebarIsShown;
},
toggleSidebar: toggleSidebar
};
});

routes.js

'use strict';

/**
* Route configuration
*/
angular.module('AppTool')
.config(['$stateProvider', '$urlRouterProvider', '$locationProvider'
function($stateProvider, $urlRouterProvider, $$locationProvider) {

// $locationProvider.html5Mode({
// enabled: true,
// requireBase: false
// });
// For unmatched routes
$urlRouterProvider.otherwise('/');
// Application routes
$stateProvider
.state('index', {
url: '/',
templateUrl: '/',
})
}
]);

index.html

<!DOCTYPE html>
<html ng-app="AppTool" ng-controller="KMController">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">

<title>LumX</title>

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

<link rel="stylesheet" href="/lumx.css">
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:300,400,500,700">
<link rel="shortcut icon" type="image/png" href="/favicon.png">
</head>

<body>
<h1>{{check}}</h1>
<ng-include src="'/includes/common/header.html'"></ng-include>
<div class="main" ng-view></div>



</body>
</html>

最佳答案

您需要为每个类别(服务、 Controller 等)声明不同的模块并将其注入(inject)主模块。

angular.module('apptool.service', []);
angular.module('apptool.controller', []);
angular.module('apptool', ['apptool.service', 'apptool.controller'];

现在您可以将服务创建为:

angular
.module('apptool.service') // without the [] because the module is already declarated
.service('Sidebar', function()
{
var sidebarIsShown = false;

function toggleSidebar()
{
sidebarIsShown = !sidebarIsShown;
}

return {
isSidebarShown: function()
{
return sidebarIsShown;
},
toggleSidebar: toggleSidebar
};
});

Controller :

/* global angular */
/* global escape */
/* global console */
'use strict'; // jshint ignore:line

angular.module('apptool.controller')
.controller('KMController', [ '$scope', KMController]);

function($scope)
{
$scope.check = "The Check";
}

将所有内容保存在单独的文件中并将它们包含在index.html中

//编辑:似乎我对你的问题的理解是错误的。您的意思是您只想在同一模块中运行单独的 Controller 文件和服务?然后只需首先包含模块声明 js 文件,然后包含包含服务和 Controller 的所有其他文件。

关于javascript - 如何在 angular.js 中分别编写 Controller 、服务、路由和模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33718642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com