【问题标题】:How to pin open a sideNav in Angular-Material Design如何在 Angular-Material Design 中固定打开 sideNav
【发布时间】:2015-05-05 22:24:48
【问题描述】:

我一直在使用

<md-sidenav md-component-id="leftNav" md-is-open="vm.isOpen"
            md-is-locked-open="vm.isPinned" ... >
    <i class="fa fa-bars float-right" ng-click="vm.toggleNav()"></i>
    ...
</md-sidenav>

使用控制器中的 toggleNave 方法设置值

class MyController {
    constructor($mdSideNav) {
        this.mdSideNav = mdSideNav;
        this.isPinned = false;
        this.isOpen = false;
    }

    toggleNav = (navId) => {
        this.$mdSideNav(navId).toggle().then( () => {
            this.isPinned = this.isOpen;
        }
    }
}

但这会导致屏幕在打开和关闭时闪烁,这似乎不是固定打开 sideNav 的最佳方式。

希望中殿切换开关打开/关闭,但在我关闭它之前保持粘性打开。

如果我使用 md-is-locked="$media('')" 那么 sideNav 锁定打开并且永远不会关闭,直到窗口缩小到媒体大小以下。这不是我想要的。

如果我根本不使用 md-is-locked,那么当您点击离开它时,sideNav 会折叠关闭,但我希望它保持打开状态!直到我想关闭它。

有人知道怎么做吗?

谢谢

顺便说一句:我使用的是 ES6,因此使用了类和箭头函数。 :-)

【问题讨论】:

    标签: angularjs material-design ecmascript-6 angular-material


    【解决方案1】:

    通过查看文档,我认为您不需要使用 isPinned 和 isOpen 变量,因为它看起来像切换函数处理它。

    因此,这个

    toggleNav = (navId) => {
        this.$mdSideNav(navId).toggle().then( () => {
            this.isPinned = this.isOpen;
        }
    }
    

    会来

    toggleNav = (navId) => {
        this.$mdSideNav(navId).toggle();
    }
    

    要完成这项工作,您需要通过 sideNav 的 id

    所以这个

    <i class="fa fa-bars float-right" ng-click="vm.toggleNav()"></i>
    

    会变成

    <i class="fa fa-bars float-right" ng-click="vm.toggleNav('leftNav')"></i>
    

    最后,值得检查一下你正在使用的 Material Design 版本,不使用 >0.8 版本时似乎有很多问题。

    请参阅文档Side Nav Material Design中的右侧导航示例

    【讨论】:

    • 请注意切换将如何打开侧导航,但只是暂时的。单击/点击中间窗格中的其他任何位置,侧面导航会自动关闭。如果您想切换它以保持打开状态,那么您需要的不仅仅是切换。
    • 对。 Check this out 我刚刚定义了一个布尔值 $scope.keepOpen 并将其映射到“md-is-locked-open”。我认为只要改变这个,你应该得到想要的结果。希望对你有帮助
    • 不幸的是,使用布尔值并不是一个很好的解决方案。例如,您不能再通过单击外部来关闭 sidenav。我和@KendrickBurson 有同样的问题。奇怪的是,材料设计的演示站点没有布尔值。我试图模仿那个代码但没有成功。
    • 你是对的。要让它作为材料设计演示工作,您不需要布尔值。使用toggle() 就可以了。但是,我认为@KendrickBurson 希望它保持开放;因此使用布尔值。
    猜你喜欢
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    相关资源
    最近更新 更多