2016-12-26 3 views
1

私はangularjsとionicでかなり新しいです。私は1つの問題にぶち当たっています。私は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' 
     } 
    } 

    }) 
+0

はどこかで定義された 'ujobsCtrl'ですか? (それを状態に割り当てることは、それを定義することと同じではありません)。そのファイルはあなたのアプリに含まれていますか?生成される実際のエラーは何ですか?アプリが読み込まれないと言うだけでは、多くの情報が得られません.... – Claies

答えて

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は、コントローラの多くを持つクリーンな方法になるだろう - あなたはINDIにこれらを破ることができますあなたの.configブロックとその状態定義からそのロジックを取得してください。controllers/しかし、サニティチェックのために、オプション#1は良いスタート地点です。