1

ボタンをクリックしたときにAngular js1.5でmd-dialogをロードしようとしていますが、表示されるのはモーダルポップアップのhtmlマークアップだけですが、コントローラーはそのコンポーネントをロードしません。以下は、ダイアログを呼び出す md-dialog ファイルを表示するための私のマークアップです。

 $mdDialog.show ({
        template: require('../traderdialog/traderdialog.html'),
        controller: Controller,
        controllerAs: 'vm',
        locals : {
            traderId : traderId
        },
        clickOutsideToClose : true
        });
    }

したがって、 controller :Controller を実行すると、ディレクトリ構造にあるように別のコンポーネントに移動します。traderdialog.js の私のコードは次のとおり です。

 angular.module('dashboard')
.component('traderdialog', {
    template: require('./traderdialog.html'),
    controller: Controller,
    controllerAs: 'vm',
    bindings: {

    }
});

function Controller( $mdDialog) { *some code* }
4

3 に答える 3

0

mdDialog でコントローラーを使用する方法は 2 つあります。そのうちの 1 つは、保持スコープで親と同じスコープを使用することです。

$mdDialog.show({
          controller: function () {
            return self;
          },
          templateUrl: 'templates/mdDialog.html',
          parent: angular.element(document.body),
          targetEvent: ev,
          clickOutsideToClose: false,
          bindToController: true,
          scope: $scope,
          hasBackdrop: true,
          preserveScope: true
        });

もう 1 つは controllerAs 属性で使用され、初期化されます。

$mdDialog.show({
        controller: DialogController,
        templateUrl: 'templates/mdDialog.html',
        parent: angular.element(document.body),
        targetEvent: ev,
        clickOutsideToClose: true,
        controllerAs: 'DlgCtrl',
        bindToController: true,
        locals: {
          formData: $scope.formData,
        }
      })

また、DlgCtrl.formData 構文を使用してローカルに到達できます。

于 2016-05-03T19:38:11.017 に答える
0
$mdDialog.show ({
        template: require('../traderdialog/traderdialog.html'),
        controller: function ControllerName($scope){
                    $scope.data = "Controller Loaded";
         },
        locals : {
            traderId : traderId
        },
        clickOutsideToClose : true
        });
    }

また

 $mdDialog.show ({
            template: require('../traderdialog/traderdialog.html'),
            controller: controllerName,
            locals : {
                traderId : traderId
            },
            clickOutsideToClose : true
            });
        }
    function controllerName($scope){
                        $scope.data = "Controller Loaded";
             }
于 2016-04-27T17:43:31.227 に答える