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
}
试试这个
尝试在单击按钮显示用户消息后显示一个对话框。我的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
}
试试这个