2017-06-30 19 views
0

ボタンをクリックしてユーザーのメッセージを表示した後にダイアログボックスを表示しようとしています。私の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:

swApp.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

答えて

1

$scopeの代わりに、コントローラ

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

だから同じコントローラ内で開いたダイアログボックスで、 コントローラの機能が必要な場合は、スコープを定義することができます。または、コントローラの特定の値が必要な場合は、モデルの地域の範囲を明確にすることができます。モデルの局所的な範囲を定義するために、このベビーカー

scope: $scope 

通過範囲を規定するための

locals: { 
      items: $scope.items 
     } 

この

を試します
関連する問題