Javascript $ionicPlatform.准备好不开火了吗

Javascript $ionicPlatform.准备好不开火了吗,javascript,angularjs,cordova,ionic-framework,Javascript,Angularjs,Cordova,Ionic Framework,我有一个问题,$ionicPlatform.ready中的代码没有触发,如果我添加路由器文件和控制器文件,但我找不到问题 模板和控制器工作正常 index.html <script src="lib/ionic/js/ionic.bundle.js"></script> <script src="cordova.js"></script> <script src="js/app.js"></script> <scri

我有一个问题,$ionicPlatform.ready中的代码没有触发,如果我添加路由器文件和控制器文件,但我找不到问题

模板和控制器工作正常

index.html

<script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="cordova.js"></script>

<script src="js/app.js"></script>
<script src="js/core/router/app.router.js"></script>
<script src="js/feature/notification/notification.js"></script>

<body ng-app="app">
    <ion-nav-view></ion-nav-view>
</body>
app.router.js

angular
    .module('app', ['ionic', 'ui.router'])
    .config(Router);

Router.$inject = ['$stateProvider', '$urlRouterProvider'];

function Router($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.otherwise('/');

    $stateProvider
        .state('notifications', {
            url: '/',
            templateUrl: 'js/feature/notification/notification.html',
            controller: 'NotificationCtrl',
            controllerAs: 'model'
        });
}
通知.js

angular
    .module('app')
    .controller('NotificationCtrl', NotificationCtrl);

function NotificationCtrl() {
    var model = this;
    console.log('Test');
}

感谢您抽出时间

$ionicPlatform.ready
中包装的代码没有运行,因为您不止一次地定义了应用程序模块,而它应该只在
app.js中定义。对模块的后续调用应该去掉依赖项注释。在这种情况下,您可以将
app.router.js
中的行从
.module('app',['ionic','ui.router'])
更改为
.module('app')


另一件需要注意的事情是,对于Ionic,您不需要自己注入
ui路由器
,因为它包含在Ionic包中。

但是,您不应该删除
路由器。$inject=['$stateProvider','$urlRouterProvider']
除非您正在使用自动注释工具,如
ng annotate
,因为缩小代码时可能会出现问题(谢谢@AdityaSingh)。


(为了清晰和准确而编辑。)

好的,如果我理解正确,我会覆盖模块吗?它与您的解决方案配合良好您的模块定义应该只出现一次(在app.js文件中),然后在后续文件中调用您的模块,而不使用依赖项注释。为了准确地回答您的问题,我进行了更多的挖掘,以找到代码是如何解释这一点的,以及它为什么会中断。对公认答案的评论似乎很好地概括了这一点。意译:初始模块定义可以看作是一个setter,后续模块调用可以看作是getterng annotate
,否则不应删除code>。注释有助于避免生产小型化构建中的错误。检查
ng strict di
以进一步使用case@aditya爱奥尼亚公司不负责路由器吗?我知道这对所有其他依赖项都很重要,但我想知道我是否误解了路由器。否。Ionic不处理显式路由。如果删除上面的代码并缩小,那么代码可能无法工作。使用像
gulp
ng annotate
这样的构建工具来添加显式注释。
angular
    .module('app')
    .controller('NotificationCtrl', NotificationCtrl);

function NotificationCtrl() {
    var model = this;
    console.log('Test');
}