实现“;有条件的“;ember.js中的后退按钮
Implementing a "conditional" back button in ember.js
我正在开发一个基于ember.js(1.2版)的移动应用程序,并试图找到实现许多移动应用程序中常见的全局菜单切换/返回按钮模式的最常用方法。具体来说,它是一个位于固定顶部工具栏左侧的按钮,当用户在应用程序的主页/索引视图时,它会切换隐藏的抽屉主菜单,但当进入子路径时,该按钮会显示一个后退箭头,当单击时,它将用户带回到以前查看的路线(或者如果没有以前的历史状态,即如果用户在加载应用程序时直接进入子路线,则返回索引路线)。
Fyi,目前我的应用程序在根应用程序模板中有固定的顶部工具栏和菜单切换/返回按钮。理想情况下,无论路由如何转换,无论是通过transitionTo()
还是{{#link-to}}
助手等,该功能都可以工作。
因此,从本质上讲,我想知道Ember是否在内部维护了任何可访问的历史记录/日志,说明在应用程序的使用寿命中,哪些路线被转换为可访问的路线,以及根据当前路线有条件地更改切换/后退按钮执行的操作及其显示(也称为图标)的最佳方式。和/或有没有办法倾听余烬的路线变化事件,这样我就可以在需要的时候自己实现这段历史?
我不想成为坏消息的传递者,但我也不想让你悬着。
Ember不记录历史,也没有一个通用的用例(尤其是因为浏览器会为您记录它)。
幸运的是,你可以在应用程序控制器中监控路由更改,这样的事情应该会让你开始(注意,我没有花时间制定一个完美的解决方案,只是向你展示了它所需的基本知识,我会让你找出适合你的工作流程)
http://emberjs.jsbin.com/IZAZemEP/1/edit
App.ApplicationController = Em.Controller.extend({
history: [],
hasHistory: function(){
return this.get('history.length')>1;
}.property('history.length'),
watchHistory: function(){
this.get('history').pushObject(this.get('currentPath'));
}.observes('currentPath'),
actions: {
goBack: function(){
// implement your own history popping that actually works ;)
if(this.get('hasHistory')){
this.get('history').popObject();
window.history.back();
this.get('history').popObject(); // get rid of route change here, don't need it
}
}
}
});
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 强制模板刷新ember.js
- 实现“;有条件的“;ember.js中的后退按钮
- 在 ember.js 中共享不同模板的按钮
- Ember.js – 将按钮操作从 #each 循环绑定到其自己的模型
- ember - 控制器操作仅由输入字段调用,而不由按钮调用
- Ember.js路由和后退按钮问题
- 即使没有嵌套路由,Ember Rails 后退按钮也不会呈现模板
- 如何在单击按钮时将动态行添加到表中,并使用Ember在单击时使现有行可编辑
- 如何将动态单选按钮绑定到Ember中的控制器属性
- 当导航栏中的按钮在ember中被点击时切换侧边栏
- Ember.js过滤内容并使用按钮操作
- 使用ember.js让classNameBindings与把手中的按钮视图一起工作
- 使用ember绑定而不是jQuery在单击时更改按钮文本
- 如何在Ember中选择默认单选按钮
- Ember.js(1.13版)-切换按钮's组件中的CSS类
- 如何在 Ember.view 上附加按钮的内部 HTML
- Ember 2.6 按钮操作绑定不触发模板更新
- Ember.js隐藏带有按钮的分隔符,但保留didInsertElement功能