与angular-ui-router一起使用时,$ materialDialog无法显示

时间:2014-10-10 07:24:41

标签: angularjs angular-ui-router material-design

我有一个样本plunker here

我有一个登录页面,并且在成功登录后,用户被重定向到实际的主页,类似于:

$state.go('home');

现在,登录后,我有一个按钮来显示一些对话框。单击该按钮无法加载对话框。如果用户刷新主页(登录后),然后单击按钮,则对话框将成功打开。 我无法理解为什么会这样。这可能是由于angular-ui-router中的错误造成的?或者我错过了什么?

1 个答案:

答案 0 :(得分:1)

我相信,你错了,当使用ui路由器时,你应该让它控制你的状态。我不确定为什么你的对话框无法显示,但我注意到你正在使用ng-click打开它。更好的方法是制作一个ui-sref按钮,该按钮映射到子状态。

<md-button ui-sref="characters.create" />

然后在你的状态定义中定义一个onEnter而不是一个控制器。

.state( 'characters.create', {
        url: '/create',
        templateUrl: 'character/create.html',
onEnter: function( $mdDialog, $log, $state ) {
            var ev = null; // this should be the $event
            $mdDialog.show(
                $mdDialog.alert()
                    .parent( angular.element( document.body ) )
                    .title( 'This is an alert title' )
                    .content( 'You can specify some description text in here.' )
                    .ariaLabel( 'Alert Dialog Demo' )
                    .ok( 'Got it!' )
                    .targetEvent( ev )
            ).then( function( answer ) {
                    $log.debug( 'answer', answer );
                    $state.go( 'characters' );
                }, function() {
                    $log.debug( 'cancelled dialog' );
                } )
        }