2016-05-13 5 views
1

サービスと工場を投入するという解決策があります。私は工場を注入するとき、私はちょうどValidationMatrixFactoryと呼ばれたものはもう何も働かない。ホームページは読み込まれますが、リンクはもはや解決されません。基本的には何かをクリックしても効果はありません。 Angularはエラーを投げません。すべてが機能しなくなります。複数のブラウザを試してみましたが、IISを再起動しても効果はありません。工場への注入時に角度停止が発生する

解決のconsole.logステートメントは決してヒットしません。ここに解決策があります:

 resolve: { 
      eventData: ['$http', '$stateParams', 'ViewMatrixService', 'ValidationMatrixFactory', function ($http, $stateParams, ViewMatrixService, ValidationMatrixFactory) { 
       console.log('EventId: ' + $stateParams.eventId); 
       return $http.get('http://localhost:10569/api/eventView/' + $stateParams.eventId).then(function (response) { 
        ViewMatrixService.GenerateViewMatrix(response.data); 
        ValidationMatrixFactory.GenerateValidationMatrix(response.data); 
        return response.data; 
       }); 
      }] 
     } 

ValidationMatrixFactoryへの参照を取り除くとすべて動作します。 ValidationMatrixFactoryはViewMatrixServiceと非常に似ていますので、今はなぜそれが問題なのかよくわかりません。ここで

はValidationMatrixFactoryです:

angular.module('myWebApp.services') 
    .factory('ValidationMatrixFactory', function() { 
     var ValidationMatrixFactory = {}; 

     ValidationMatrixFactory.GenerateValidationMatrix = function (eventData) { 
      var currentStage = eventData.CoreEvent.Stage; 
      initializeValidationMatrix(); 
      determineRequiredFields(currentStage); 
     } 

     function initializeValidationMatrix() { 
      ValidationMatrixFactory.EventTitleRequired = false; 
      ValidationMatrixFactory.EventSummaryRequired = false; 
      ValidationMatrixFactory.DesiredPublicationDateRequired = false; 
      ValidationMatrixFactory.DesiredEffectiveDateRequired = false; 
      ValidationMatrixFactory.ReasonForDesiredEffectiveDateRequired = false; 
      ValidationMatrixFactory.AssessmentTargetDateRequired = false; 
      ValidationMatrixFactory.FRSOTargetDateRequired = false; 
      ValidationMatrixFactory.BLRTargetDateRequired = false; 
      ValidationMatrixFactory.SSOTargetDateRequired = false; 
      ValidationMatrixFactory.BLSOTargetDateRequired = false; 
      ValidationMatrixFactory.FSOTargetDateRequired = false; 
      ValidationMatrixFactory.PublicationTargetDateRequired = false; 
      ValidationMatrixFactory.EffectiveTargetDateRequired = false; 
      ValidationMatrixFactory.RMRequired = false; 
      ValidationMatrixFactory.PublisherRequired = false; 
      ValidationMatrixFactory.MoPRequired = false; 
      ValidationMatrixFactory.PriorityRequired = false; 
     } 

     function determineRequiredFields(currentStage) { 
      ValidationMatrixFactory.EventTitleRequired = true; 
      ValidationMatrixFactory.EventSummaryRequired = true; 
      ValidationMatrixFactory.ReasonForDesiredEffectiveDateRequired = true; 
      ValidationMatrixFactory.DesiredPublicationDateRequired = true; 
      ValidationMatrixFactory.DesiredEffectiveDateRequired = true; 

      if (currentStage.StageNumber > 1) { 
       ValidationMatrixFactory.AssessmentTargetDateRequired = true; 
       ValidationMatrixFactory.FRSOTargetDateRequired = true; 
       ValidationMatrixFactory.BLRTargetDateRequired = true; 
       ValidationMatrixFactory.SSOTargetDateRequired = true; 
       ValidationMatrixFactory.BLSOTargetDateRequired = true; 
       ValidationMatrixFactory.FSOTargetDateRequired = true; 
       ValidationMatrixFactory.PublicationTargetDateRequired = true; 
       ValidationMatrixFactory.EffectiveTargetDateRequired = true; 
       ValidationMatrixFactory.RMRequired = true; 
       ValidationMatrixFactory.PublisherRequired = true; 
       ValidationMatrixFactory.MoPRequired = true; 
      } 

      if (currentStage.StageNumber > 2) { 
       ValidationMatrixFactory.PriorityRequired = true; 
      } 
     } 

     ValidationMatrixFactory.ValidateFields = function (saveType) { 

     } 
    }); 

私はindex.htmlをでスクリプトへの参照を持っています。

<script src="libraries/angular/1.4.8/angular.min.js"></script> 
    <script src="libraries/angular/1.4.8/angular-animate.min.js"></script> 
    <script src="libraries/angular-ui-router/0.2.14/angular-ui-router.min.js"></script> 
    <script src="libraries/angular-scroll/angular-scroll.min.js"></script> 
    <script src="libraries/uiboostrap/0.14.3/ui-bootstrap-tpls-0.14.3.min.js"></script> 
    <script src="libraries/dirPagination/dirPagination.js"></script> 
    <script src="libraries/angular-loading-bar/loading-bar.js"></script> 
    <script src="libraries/ng-file-upload/ng-file-upload.min.js"></script> 
    <script src="libraries/ng-file-upload/ng-file-upload-shim.min.js"></script> 
    <script src="js/app.services.js"></script> 
    <script src="js/view.matrix.service.js"></script> 
    <script src="js/validation.matrix.factory.js"></script> 
    <script src="js/utility.service.js"></script> 
    <script src="js/app.controllers.js"></script> 
    <script src="partials/events/EventCtrl.js"></script> 
    <script src="partials/events/EventHeaderCtrl.js"></script> 
    <script src="partials/events/EventOverviewTabCtrl.js"></script> 
    <script src="partials/events/EventAdditionalInformationTabCtrl.js"></script> 
    <script src="partials/events/EventDSOTabCtrl.js"></script> 
    <script src="partials/events/EventFooterCtrl.js"></script> 
    <script src="js/nonAngular.js"></script> 
    <script src="js/app.js"></script> 
+0

コンソール出力を表示できますか?一般的には、有用なリンクを持つangularjs.org docsへのリンクが含まれています。 – robrich

+0

@robrichそれは問題です。エラーは発生しません。それは黙って失敗します。 – Legion

+0

'myWebApp.services'モジュールに依存関係を含めましたか? –

答えて

2

ValidationMatrixFactoryオブジェクトを工場から戻す必要があります。

.factoryは、一般的にパラメータとして名前と関数を呼び出す方法です。この関数はオブジェクトを返さなければならない関数です。あなたが何かを返さなければ、角は無限大の消化に固執します。

.serviceを使用した場合、何も返されませんでした。これは、サービスがコンストラクタ関数であるためです。サービス機能にthisを、thisにプロパティを追加することができます。

更新

angularjsバージョン1.3.4の前に、エラーがスローされなかったように見えます。 1.3.4以降、無限のダイジェストでエラーがスローされます。

+0

@Legion:ところで、どのバージョンのangularjsを使用していますか? – Saad

+0

角度バージョン1.4.8 – Legion

関連する問題