AngularJS Material: $mdDialog 抛出 ReferenceError

AngularJS Material: $mdDialog throwing ReferenceError

尝试在单击按钮显示用户消息后显示一个对话框。我的html:

<md-toolbar layout="row" id="header" class="md-toolbar-tools" ng-controller="topbarCtrl as ctrl">
<span flex="15"><img src="assets/imgs/logo.svg" id="logo" ui-sref="sois"></span>
<span flex></span>
<md-button aria-label="Open messaging menu" ng-click="ctrl.showMessages()" class="md-icon-button" aria-label="Open messaging menu">
  <md-icon>messages</md-icon>
</md-button>

controller.js:

app.controller('topbarCtrl', function($scope, Fullscreen, LoginService, $mdDialog){

this.goFullscreen = function() {
    $scope.fullscreen = Fullscreen.isEnabled();
    if(Fullscreen.isEnabled()) {
    Fullscreen.cancel();
  } else {
    Fullscreen.all();
    }
}

this.logoutBtn = function() {
    LoginService.logout();
}

 this.showMessages = function() {
$mdDialog.show({
    controller: topBarCtrl,
    templateUrl: 'messages.tmpl.html'

})    };});

this.showMessages 函数外一切正常。

点击按钮调用函数时,抛出此错误:

ReferenceError: topBarCtrl is not defined

传递 $scope 而不是控制器

$mdDialog.show({
  scope: $scope,
  templateUrl: 'messages.tmpl.html'
})

所以你在同一个控制器中打开对话框, 如果您需要该控制器的任何功能,您可以定义范围,或者如果您需要来自控制器的一些值,以便您可以定义模型的本地范围。

为了定义范围传递这个 prams

 scope: $scope 

用于定义模型的局部范围

 locals: {
           items: $scope.items
         }

试试这个