闪烁动态 <md-menu-content> 列表
Flickering with dynamic <md-menu-content> list
我想根据用户是否登录使用动态列表填充 md-menu-content。代码:
<md-menu>
<md-button class="md-icon-button" aria-label="Account" ng-click="$mdOpenMenu($event)">
<md-icon md-svg-icon="~/../Content/img/icons/ic_account_box_white_48px.svg" class="s48" aria-label="Account"></md-icon>
</md-button>
<md-menu-content width="4">
<md-menu-item ng-if-start="vm.user.isLogged">
<p>Logged as: {{ vm.user.username }}</p>
</md-menu-item>
<md-menu-divider></md-menu-divider>
<md-menu-item>
<md-button ng-click="vm.myProfile($event)">
My profile
</md-button>
</md-menu-item>
<md-menu-item ng-if-end>
<md-button ng-click="vm.logout($event)">
Logout
</md-button>
</md-menu-item>
<md-menu-item ng-if-start="!vm.user.isLogged">
<md-button ng-click="vm.openRightSideNav('login')">
Login
</md-button>
</md-menu-item>
<md-menu-item>
<md-button ng-click="vm.openRightSideNav('register')">
Register
</md-button>
</md-menu-item>
<md-menu-item class="menu-item-facebook" ng-if-end>
<md-button ng-click="vm.openRightSideNav('register')">
<span class="icon-button-facebook"></span>
Log in with Facebook
</md-button>
</md-menu-item>
</md-menu-content>
</md-menu>
这有效,但是一旦用户注销就会出现闪烁。我的意思是,一瞬间所有菜单项都显示出来了。使用 ng-switch 消除了闪烁,但额外的 dom 元素破坏了菜单:
<md-menu-content width="4">
<ng-switch on="vm.user.isLogged">
<span ng-switch-when="true">
...
</span>
<span ng-switch-default>
...
</span>
</ng-switch>
</md-menu-content>
有什么处理这种情况的建议吗?
你是对的。你的情况有闪烁。我尝试以多种不同的方式实施并得到了一个解决方案。这不是我必须说的最佳解决方案,但不会有任何闪烁。您只需尝试为 logIn
和 logOut
.
使用两个单独的菜单
这是示例代码。
<md-menu ng-if="vm.user.isLogged">
//md-menu-item
</md-menu>
<md-menu ng-if="!vm.user.isLogged">
//md-menu-item
</md-menu>
这是一个工作示例。 http://codepen.io/next1/pen/wWzebw
我想根据用户是否登录使用动态列表填充 md-menu-content。代码:
<md-menu>
<md-button class="md-icon-button" aria-label="Account" ng-click="$mdOpenMenu($event)">
<md-icon md-svg-icon="~/../Content/img/icons/ic_account_box_white_48px.svg" class="s48" aria-label="Account"></md-icon>
</md-button>
<md-menu-content width="4">
<md-menu-item ng-if-start="vm.user.isLogged">
<p>Logged as: {{ vm.user.username }}</p>
</md-menu-item>
<md-menu-divider></md-menu-divider>
<md-menu-item>
<md-button ng-click="vm.myProfile($event)">
My profile
</md-button>
</md-menu-item>
<md-menu-item ng-if-end>
<md-button ng-click="vm.logout($event)">
Logout
</md-button>
</md-menu-item>
<md-menu-item ng-if-start="!vm.user.isLogged">
<md-button ng-click="vm.openRightSideNav('login')">
Login
</md-button>
</md-menu-item>
<md-menu-item>
<md-button ng-click="vm.openRightSideNav('register')">
Register
</md-button>
</md-menu-item>
<md-menu-item class="menu-item-facebook" ng-if-end>
<md-button ng-click="vm.openRightSideNav('register')">
<span class="icon-button-facebook"></span>
Log in with Facebook
</md-button>
</md-menu-item>
</md-menu-content>
</md-menu>
这有效,但是一旦用户注销就会出现闪烁。我的意思是,一瞬间所有菜单项都显示出来了。使用 ng-switch 消除了闪烁,但额外的 dom 元素破坏了菜单:
<md-menu-content width="4">
<ng-switch on="vm.user.isLogged">
<span ng-switch-when="true">
...
</span>
<span ng-switch-default>
...
</span>
</ng-switch>
</md-menu-content>
有什么处理这种情况的建议吗?
你是对的。你的情况有闪烁。我尝试以多种不同的方式实施并得到了一个解决方案。这不是我必须说的最佳解决方案,但不会有任何闪烁。您只需尝试为 logIn
和 logOut
.
这是示例代码。
<md-menu ng-if="vm.user.isLogged">
//md-menu-item
</md-menu>
<md-menu ng-if="!vm.user.isLogged">
//md-menu-item
</md-menu>
这是一个工作示例。 http://codepen.io/next1/pen/wWzebw