所以这就是我所做的(我也使用angular-mobile-nav
和angular-snap.js
)。
这是我的HTML代码
<body ng-app="MyApp">
<div snap-drawer>
<ul class="list">
<li ng-repeat="item in sidebar.items" ng-i18next="{{item.name}}" ng-tap="snapper.close();go(item.link)"></li>
</ul>
</div>
<div id="container" snap-content snap-options="snapOpts">
<div mobile-view=""></div>
</div>
</body>
请注意go()
是改变页面的功能,我使用ng-i18next
翻译我的项目。另外ng-tap
是一个指令,它侦听触摸事件而不是鼠标事件。随着Angular> 1.1.5有一个移动模块,所以我的ng-tap
指令将不再需要。
,并通过使用$rootScope
我可以把物品在侧边栏:
$rootScope.sidebar = {
items: [
{
name: 'item_one',
link: 'page_one'
},
...
]
};
所以,如果你想改变在侧边栏的项目,只需覆盖$rootScope.sidebar
在你的控制器(未$scope.sidebar
);)
如果你不喜欢两个动画同时发生,你可以编写一个函数,等待边栏关闭,然后改变页面。它可能看起来像这样:
$rootScope.waitThenGoTo = function (page, time) {
time = time || 200;
$timeout(function() {
$navigate.go(page);
}, time);
};
如果您还有疑问,请评论。我会尽快更新这个答案。
我没有使用'snap.js',而是使用了一些自写的sidebar-directive。我已经将它的HTML放在index.html文件中('
')。我使用'$ route.current.locals。$ scope'获取当前作用域的侧边栏数据。通过使用'ng-repeat',我可以显示侧边栏内容(一个列表)。 我不知道这是否有效,但你可以尝试围绕'snap.js'(指令初始:P)创建一个指令。 – AndreM96感谢您的评论!我尝试将我的侧边栏放在索引中,但是当包裹时,由于我的菜单超出了所有动画发生的指令,因为过渡动画看起来并不平滑,所以播放效果不佳。 –
Hawk