首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我遵循模块模式结构时,AngularJS应用程序不显示任何视图(没有ngBoilerplate)

当我遵循模块模式结构时,AngularJS应用程序不显示任何视图(没有ngBoilerplate)
EN

Stack Overflow用户
提问于 2014-04-25 16:09:36
回答 2查看 359关注 0票数 1

为了改进我的应用程序目录的结构,我安装ngBoilerplate只是为了意识到我不知道如何使用该框架从头创建一个应用程序,所以我决定手动遵循模块模式(不使用ngBoilerplate)。

在将我的应用程序迁移到模块化结构之前,我执行了以下步骤:

我创建了这个目录。

代码语言:javascript
复制
src
|--app
|   |--home
|   |  |--home.js
|   |  |--home.html
|   |--about
|   |  |--about.js
|   |  |--about.html
|   |--app.js
|--assets
|--common
|  |--ui-router.js
|  |--ui-bootstrap.js
|--styles
|  |--stylesheet.css
|  |--bootstrap.css
|--index.html

我设置了index.html

代码语言:javascript
复制
<html ng-app="app" ng-controller="appCtrl">
<head>
<title ng-bind="pageTitle"></title>    
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="styles/stylesheet.css">
<link rel="stylesheet" type="text/css" href="styles/bootstrap.min.css">
<!-- AngularJS -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
<script src="common/ui-router-0.2.10.min.js"></script>
<!--Bootstrap-UI-->
<script src="common/ui-bootstrap-0.10.0.min.js"></script>
<!-- Firebase -->
<script src="https://cdn.firebase.com/js/client/1.0.11/firebase.js"></script>
<script src="https://cdn.firebase.com/libs/angularfire/0.7.1/angularfire.min.js"></script>
<!-- The App -->
<script src="app/app.js"></script>
<script src="app/home/home.js"></script>
</head>
<body>
<!-- The view -->
<div class="container" ui-view="main"></div>  
</body>
</html>

然后,我设置了第一个视图..。

代码语言:javascript
复制
<div class="thumbnail">
<div class="caption">
    Just setting up...
<br>
<buttom class="btn btn-info btn-sm">Hello</buttom>
</div>
</div>

..with自己的模块。

代码语言:javascript
复制
angular.module('app.home', [
'ui.router',
'firebase'
])
.config('config', ['$stateProvider', function($stateProvider) { 
    $stateProvider // States configuration.
        .state('home', {
            url: '/home',
            views: {
                'main': {
                    controller: "homeController",
                    templateUrl: "app/home/home.html"
                }
            },
            data: {
                pageTitle: 'Home'
            }
    }); 
}])
.controller('homeController', ['$scope', '$firebase', function($scope, $firebase) {}]);

最后是应用程序(基本上是ngBoilerplate示例应用程序的副本)。

代码语言:javascript
复制
angular.module('app', [
'ui.router',
'ui.bootstrap',
'app.home'
])
.config('config', ['$urlRouterProvider', '$stateProvider', function($urlRouterProvider, $stateProvider) { // If you want "delay until everything is ready" use 'resolve' on states.
    $urlRouterProvider.otherwise('home');
}])
.run( function run () {
})
.controller( 'appCtrl', function AppCtrl ( $scope, $location ) {
$scope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){
if ( angular.isDefined( toState.data.pageTitle ) ) {
  $scope.pageTitle = toState.data.pageTitle;
}
});
});

当我在浏览器中打开index.html时,页面不会显示主视图(我正在测试的唯一视图)。控制台上写着

我被困在这上面有一段时间了。有什么不对的?

感谢先进的!

编辑

这是柱塞

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-25 19:30:59

看来你想得太多了。

这是一个简单的错误:

您一直在向.config传递错误的参数。

代码语言:javascript
复制
// This is WRONG
.config('config', ['$stateProvider', function($stateProvider) {

// This is RIGHT (no String as 1st argument)
.config(['$stateProvider', function($stateProvider) {

看,还有,这个工作演示

票数 0
EN

Stack Overflow用户

发布于 2015-09-04 17:11:57

有两种使用自定义构建模块的方法:

1-通过引导

代码语言:javascript
复制
angular.bootstrap(document.getElementById("MODULE-DIV-ID"), ['MODULE-NAME']);

2.对主要模块的明确定义,如:

代码语言:javascript
复制
var mainApp = angular.module('mainApp', ['ngRoute', 'ngResource', 'ui.router', 'MODULE-NAME']);

如果您使用/加载模块在“视图-主”中,例如在使用角$stateProvider时,这是更灵活的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23298074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档