【问题标题】:$materialDialog fails to show when used with angular-ui-router$materialDialog 与 angular-ui-router 一起使用时无法显示
【发布时间】:2014-12-05 07:18:30
【问题描述】:

我有一个示例 plunker here

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

$state.go('home');

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

【问题讨论】:

  • downvoting 因为你只链接到你的代码,你没有把它放在这里。最好链接到完整的示例,但您应该在此处包含最相关的部分。

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


【解决方案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' );
                } )
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多