角度控制器不会被调用或实例化

时间:2015-06-23 10:26:38

标签: javascript angularjs angularjs-scope angular-ui-router

我试图从另一个控制器调用另一个控制器中的函数但是我一直收到错误

Error: [ng:areq] Argument 'NewCaseCtrl' is not a function, got undefined

我的app.js

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

  .state('app.dashboard', {
    url: "/dashboard",
    views: {
      'menuContent': {
        templateUrl: "templates/dashboard.html",
      }
    }
  })

.state('app.new', {
    url: "/new_referral",
    views: {
      'menuContent': {
        templateUrl: "templates/new_referral.html",
        controller: 'NewCaseCtrl'
      }
    }
  })

我的dashboard.html

<ion-view view-title="Dashboard">
  <ion-content>
    <div class="list card">
      <div class="item bar bar-royal">Referral Case Updates</div>
        <div class="item item-body">
                <div ng-controller="NewCaseCtrl" class="ion-ios-plus-outline" ng-click="createNew()"></div>
      </div>
    </div>      
  </ion-content>
</ion-view>

我的new_referral.html

<ion-view view-title="New Referral">
    <ion-nav-bar class="bar-stable">
    <ion-nav-buttons side="left">
        <button class="button button-small" ng-click = "goBack()">Cancel</button>
    </ion-nav-buttons>  
  </ion-nav-bar>
  <ion-content>
<p> In new referral page
  </ion-content>
</ion-view>

我的new_controller.js

angular.module('my.controllers')
.controller('NewCaseCtrl', function($scope, $rootScope, $q, $window, $ionicModal, createNewRealEstateCase, $state, $ionicLoading, $cordovaCamera, $cordovaFile, $cordovaFileTransfer, $ionicSlideBoxDelegate) {
   $scope.createNew = function() {
    console.log("in here build loan application")
    createNewRealEstateCase.buildLoanApplication().then(function(data){
      $rootScope.states = data.states;
      $rootScope.nationalities = data.nationalities;

      var hideSheet = $ionicActionSheet.show({
      buttons: [
       { text: 'Eligibility Checking' },
       { text: 'Loan Application' }
      ],
      cancelText: 'Cancel',
      titleText: 'Type of Service',

      cancel: function() {
          // add cancel code..
      },
      buttonClicked: function(index) {
        console.log(index)
        if(index == 0) {
          $scope.eligibility = true;
        }
        else if(index == 1){
          $scope.eligibility = false;
        }
        $state.go('app.new')
        return true;
      }
    });

    $timeout(function() {
      hideSheet();
    }, 10000);

    });
  };
});

为什么我在启动ng-controller =“NewCaseCtrl”时点击dashboard.html中的createNew() div时会出现错误?为什么它不能正常工作?

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

您可以拥有一个共享数据和服务的服务,而不是嵌套控制器。控制器的功能。