离子控制器定义

时间:2016-12-26 01:26:34

标签: angularjs ionic-framework controllers

我对angularjs和ionic很新,我遇到了一个问题。下面我从app.js文件中发布了一些代码,我注意到每当我定义一个新的控制器(注释掉的行)导致应用程序无法加载。

我将我的代码与其他应用模板进行了比较,看起来app.js文件中的所有内容都是正确的,所以我完全不知道是什么导致了这个问题!有没有人见过这样的东西?

.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider

    .state('app', {
    url: '/app',
    abstract: true,
    templateUrl: 'templates/menu.html',
    controller: 'AppCtrl'
  })

  .state('app.userJobs', {
    url: '/userJobs',
    views: {
      'menuContent': {
        templateUrl: 'views/userJobs.html'
   //     controller: 'ujobsCtrl'
      }
    }

  })

1 个答案:

答案 0 :(得分:2)

完全as @Claies said, you would need to define the ujobsCtrl as a controller。你没有评论的这一行不是一个定义 - 它实际上是ujobsCtrl控制器的请求;如果你还没有定义它(我假设你没有!),那么事情肯定会失效。一些文档要查看:ui-router's docs on controllers;然后是AngularJS's docs on Controllers

以下代码可供您选择:

选项#1:使用匿名函数作为控制器:

.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider
    .state('app', {
      url: '/app',
      abstract: true,
      templateUrl: 'templates/menu.html',
      controller: 'AppCtrl'
    })
    .state('app.userJobs', {
      url: '/userJobs',
      views: {
        'menuContent': {
          templateUrl: 'views/userJobs.html'
          // controller: 'ujobsCtrl' // <-- Can't use this, it's not defined
          controller: function ($scope, $log){
            $log.log('yay!');
          }
      }
    }
})

或选项#2,您可以在其中定义一个名为ujobsCtrl的单独控制器:

.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider
    .state('app', {
      url: '/app',
      abstract: true,
      templateUrl: 'templates/menu.html',
      controller: 'AppCtrl'
    })
    .state('app.userJobs', {
      url: '/userJobs',
      views: {
        'menuContent': {
          templateUrl: 'views/userJobs.html'
          controller: 'ujobsCtrl' // <-- defined below, so we can now use this
      }
    }
})
.controller('ujobsCtrl', function ($scope, $log){
  $log.log('yay!');
})

对于较大的应用程序,选项#2将成为拥有大量控制器的更简洁的方式 - 您可以将它们分解为controllers/目录中的单个文件,并从{{1}中获取该逻辑块和状态定义。但是,为了进行健全检查,选项#1是一个很好的起点。