2016-04-19 5 views
0

I持っている大きな角のプロジェクトに次のコード:私はその後elementdelete element['views']['[email protected]']['controller'];とinitを使用してコントローラを削除することができますが、どのように私はHomeControllerが存在するかどうかを確認することができます知っているAngularJs 1.3チェック

$stateProvider.state('my-app', { 
    url : '/', 
    views: { 
     '[email protected]': { 
      templateUrl: '/?page=/home', 
      controller: 'HomeController' 
     } 
    } 
}); 

?研究の1日後。 Angularでは作業中の解決策が存在しないようです。

+0

だけではconsole.log( 'にHomeController呼び出す')を使用します。あなたのホームコントローラーでコントローラーを呼び出すと、ブラウザーのログにプリンターが表示されます。 –

+0

いくつかのコントローラが存在しないために存在するかどうかを確認したいと思います。 –

答えて

0

コントローラを削除しないでください。これは角度で行う必要があります。

しかし、注入されたサービス変数をコントローラの作成時に設定し、それを '破壊する'ことができます。私。

angular 
    .module('something') 
    .controller('HomeController', HomeController); 

HomeController.$inject = ['$scope', 'myGlobalService']; 
function HomeController($scope, myGlobalService) { 

    myGlobalService.isHomeControllerPresent = true; 

    $scope.$on("$destroy", function() { 
    myGlobalService.isHomeControllerPresent = undefined; 
    }); 
} 

しかし、これは「角型」よりもハックです。

あなたは$スコープへのアクセス権を持っていて、(すなわちNG-コントローラ= "にHomeControllerとしてhomeCtrl"またはcontrollerAs: 'homeCtrl')コントローラの名前を知っているなら、あなたは、単にチェックすることができ:

if ($scope.homeCtrl) { 
    ... 
} 

はすべてのコントローラがそのスコープの一部であるため、各コントローラはそのスコープに名前で「接続」されています。

しかし、再び:誰が角以外のコントローラを削除してはならない;)