我遇到问题,如果我添加路由器文件和控制器文件但是我找不到问题,$ 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.js
angular
.module('app', ['ionic'])
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
if (window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
cordova.plugins.Keyboard.disableScroll(true);
}
if (window.StatusBar) {
StatusBar.styleDefault();
}
console.log('##################');
});
});
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'
});
}
notifications.js
angular
.module('app')
.controller('NotificationCtrl', NotificationCtrl);
function NotificationCtrl() {
var model = this;
console.log('Test');
}
感谢您的时间
答案 0 :(得分:3)
$ionicPlatform.ready
中包含的代码无法运行,因为您只应在app.js
中定义应用模块时多次定义它。对模块的后续调用应该不依赖于依赖性注释。在这种情况下,您可以将app.router.js
中的行从.module('app', ['ionic', 'ui.router'])
更改为.module('app')
。
另外需要注意的是,使用Ionic时,您不需要自己注射ui-router
,因为它包含在Ionic包中。
但是,您不应删除Router.$inject = ['$stateProvider', '$urlRouterProvider'];
,除非您使用自动注释工具(例如ng-annotate
),因为在缩小代码时可能会出现问题(感谢@AdityaSingh)。
(为了清晰和准确而编辑。)