1

コントローラーをモーダル (ui.bootstrap) で、通常のビュー (モーダルなし) として使用したいと考えています。コントローラーは、通常のビューとモーダルで物事を追加するために使用されます。

コントローラーがモーダルまたは通常のビューで使用されているかどうかを知るために、モーダルで解決属性を使用しています。

$modal.open({
    resolve: {
        inModal: function() {
            return true;
        }
    }
    //other
})

問題は、それを使用するには、コントローラーに挿入する必要があることです:

function myCtrl($scope, inModal) {
    $scope.inModal = inModal;
}

ただし、この依存関係は通常のビューでは利用できません。inModal利用可能な場合、コントローラーに注入できますか?

function myCtrl($scope) {
    //$scope.inModal = inject inModal if it is available
}
4

2 に答える 2

0

解決する代わりに、スコープを $modal オプションに渡すことができます。

   $scope.inModal = true;
   $modal.open({ scope: $scope });

次に、コントローラーで:

function myCtrl($scope) {
    if($scope.inModal) {
       ...
    }
}

$scope を $modal に渡すと、$modal は、親スコープからプロトタイプとして inModal を継承する子スコープを作成します。コントローラー関数が通常のビューで呼び出されると、inModal は定義されません。

于 2015-01-27T15:09:20.120 に答える
0

次のように $inject を使用して注入できます。

myCtrl.$inject = ['$scope', 'inModal'];

私はそれをしました、そしてそれはうまくいきます。以下は $modal のコードです。

$modal.open({
    controller : "myCtrl",
    resolve: {
        inModal: function() {
            return true;
        }
    }
})

コントローラ:

app.controller('myCtrl', function($scope, inModal) {
    //you can directly use inModal or assign it to $scope property 
});
于 2015-02-08T16:38:23.303 に答える