2016-10-27 18 views
0

私はモーダルが開いているか閉じているかを調べようとしています。しかし、私はエラーがオープンのプロパティを読み取ることができない取得しています。私は$ modal.openにフックして結果を得る必要があることを理解しています。この例ではquestionを使用していますが、まだエラーが発生しています。このモーダルが開いていると私の意図は、私は次のプロンプトを開くことができません。しかし、モーダルが閉じられている場合は、別のモーダルプロンプトが開きます。長いことを見ているだけでは、どんな提案も歓迎されているのか分かりません。ここでanglejsモーダルが開いているかどうかを確認する方法

は別のmodal.jsファイルからモーダルコードですありがとう:ここ

function openSerialEntry($modal, $scope, item, onupdate) { 
    var modalInstance = $modal.open({ 
     templateUrl: "sales/partials/serialNumberEntry.html", 
     size: "med", 
     backdrop: "static", 
     keyboard: false, 
     controller: serialNumberCtlr, 
     controllerAs: "vm", 
     resolve: { 
      item: function() { return item; }, 
      onupdate: function() { return onupdate; }, 
     } 
    }); 

    modalInstance.result.then(function (result) { 
     onupdate(result); 
    }, function() { 

    }); 
} 

は、単に変数を設定しようとしている私のコントローラです:

$scope.modalOpen = false; 

    commonModals().openSerialEntry().opened.then(function() { 
     $scope.modalOpen = true; 
    }); 

エラー:例外TypeError:読み取ることができません。プロパティ 'open'は未定義です Object.openSerialEntry(modals.js:347)

+0

これを試しましたか? $( "。モーダル")。オン( 'shown.bs.modal'、function(){ $ scope.modalOpen = true; }); – Steeno

+0

コントローラの定義を含める必要があります。どの機能がコントローラ機能であるかはわかりません。 'openSerialEntry'はあなたのコントローラー関数ですが、これはコントローラーにとって奇妙な名前です。 –

答えて

1

$modalは関数に渡されていません、それはundefinedです。そのため、エラーCannot read property 'open' of undefinedが表示されます。コントローラに$modalを注入してopenSerialEntryに渡す必要があると思います。また、openSerialEntry関数から何も返さないので、次のエラーはCannot read property 'then' of undefinedになります。ここで

は、これらの問題を修正するコードです:

function openSerialEntry($modal, $scope, item, onupdate) { 
    var modalInstance = $modal.open({ 
     templateUrl: "sales/partials/serialNumberEntry.html", 
     size: "med", 
     backdrop: "static", 
     keyboard: false, 
     controller: serialNumberCtlr, 
     controllerAs: "vm", 
     resolve: { 
      item: function() { return item; }, 
      onupdate: function() { return onupdate; }, 
     } 
    }); 

    return modalInstance.result.then(function (result) { 
     onupdate(result); 
    }, function() { 

    }); 
} 

yourcontrollerfunction.$inject = ['$modal']; 

commonModals().openSerialEntry($modal, $scope, item, onupdate).then(function() { 
    $scope.modalOpen = true; 
}); 
+0

@TroyBryant、私の答えは助けましたか? –

+0

は魅力のように働いてくれました - すべての提案を少し微調整して動作させました –

+0

あなたはようこそ) –

0

アプリモジュール内の$モーダルサービスとモジュールの依存関係が含まれていませんでした。

関連する問題