Fre*_*zza 7 json angularjs angular-material
我试图使用Angular Material Menu Bar指令递归创建菜单栏,但结果不符合预期.到目前为止,我所拥有的最佳解决方案是创建一个指令并递归调用它,如下所示:https://plnkr.co/edit/5pFmmD6K3qz5qolRifVA.请注意,此Plunker中有两个菜单栏.第一个是使用JSON的递归结构创建的,第二个是直接写在模板上.我的解决方案的问题发生在有"Lorem - > Dolor - > ..."等嵌套菜单时,因为嵌套菜单没有正确对齐.
检查Chrome上生成的代码,我注意到第二个菜单栏中的嵌套菜单(直接在模板上编写)有一些关于其嵌套状态的属性:
<md-menu md-position-mode="cascade"
class="md-nested-menu md-menu ng-scope"
md-nest-level="1">
...
</md-menu>
Run Code Online (Sandbox Code Playgroud)
虽然第一个菜单栏中的相同菜单没有:
<md-menu ng-if="ctrl.isCompoundedMenuItem()" class="md-menu ng-scope">
...
</md-menu>
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能解决这个问题?
只是添加一个信息:我已经尝试过使用ng-include
创建菜单栏的方法,但结果非常糟糕.
我能够通过在指令模板中“手动”设置问题中提到的属性和类来解决菜单行为的问题,如下所示:
<md-menu ng-if="ctrl.isCompoundedMenuItem()"
md-position-mode="cascade"
class="md-nested-menu"
md-nest-level="{{ ::nestLevel }}">
Run Code Online (Sandbox Code Playgroud)
其中nestLevel
位于隔离范围内,并在每个新级别上递增:
<md-menu-content class="md-menu-bar-menu md-dense">
<my-menu-item ng-repeat="item in menu.items" menu="item"
nest-level="{{ ::(nestLevel + 1) }}"></my-menu-item>
</md-menu-content>
Run Code Online (Sandbox Code Playgroud)
自然地从 1 开始:
<md-menu-bar ...>
...
<md-menu-content>
<my-menu-item ng-repeat="item in menu.items" menu="item"
nest-level="1"></my-menu-item>
</md-menu-content>
</md-menu-bar>
Run Code Online (Sandbox Code Playgroud)
更新后的插件可以在这里看到: https: //plnkr.co/edit/QBjeR2hZFKsJ88Hl4ptG。
归档时间: |
|
查看次数: |
1953 次 |
最近记录: |