Javascript $ionicPlatform.准备好不开火了吗
我有一个问题,$ionicPlatform.ready中的代码没有触发,如果我添加路由器文件和控制器文件,但我找不到问题 模板和控制器工作正常 index.htmlJavascript $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
<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,后续模块调用可以看作是getter除非使用自动化工具,如ng 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');
}