2016-04-27 53 views
1

我想加載在角度js1.5中的MD對話框,當點擊按鈕時,我看到的是模式彈出的HTML標記但不是控制器加載的那個零件。以下是我爲顯示它調用的對話框Md對話框沒有加載與它關聯的控制器

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

所以,當我做控制器MD-對話框 文件標記:控制器,它關係到不同的組件,因爲我有我的目錄結構。 我對traderdialog.js代碼如下爲

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

    } 
}); 

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

回答

0
$mdDialog.show ({ 
     template: require('../traderdialog/traderdialog.html'), 
     controller: function ControllerName($scope){ 
        $scope.data = "Controller Loaded"; 
     }, 
     locals : { 
      traderId : traderId 
     }, 
     clickOutsideToClose : true 
     }); 
    } 

OR

$mdDialog.show ({ 
      template: require('../traderdialog/traderdialog.html'), 
      controller: controllerName, 
      locals : { 
       traderId : traderId 
      }, 
      clickOutsideToClose : true 
      }); 
     } 
    function controllerName($scope){ 
         $scope.data = "Controller Loaded"; 
      } 
+0

請檢查我的更新版本代碼@Mohsin –

0

你應該注入從父控制器模式的範圍所需的數據。當模式打開時,它有自己的範圍。

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

現在,讓我們爲您定義您的控制器模式traderdialog.html

angular.module('app').controller('MyCtrl',['traderId', function(traderId){ 
    console.log(traderId); 
}]); 

現在traderId會反映在你的模態。

0

有在mdDialog使用控制器兩路,其中之一是使用相同的範圍與家長在保留範圍:

$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 
     }); 

另一種是使用具有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語法訪問您的本地人。

相關問題