我目前正在测试Ember.Router
,我想知道如何在匹配特定条件时限制对某些特定路由的访问。在我的示例中,我正在使用结帐流程,其中必须先设置帐单地址,然后用户才能继续使用帐单方式等(例如:帐单方式视图需要知道帐单国家/地区以提供其允许的付款方式)。
在我的尝试中,我试图验证模型(序列化:函数()或输入:函数()?),当未设置给定值时,路由器应重定向到以前的状态(必须这样做一点超时,否则哈希将无法正确更新)。
这是我的示例代码
http://jsfiddle.net/mediastuttgart/uMKGt/
编辑:
找到汤姆戴尔的一些话,虽然与这个问题无关,但仍然是一个很好的答案:“状态的全部意义在于避免这种情况......处理它们是当前状态的责任。”。
参看。http://github.com/emberjs/ember.js/issues/745
嗯,这是有道理的。
编辑2:
尽管在 location 方法设置为“null”时这是有道理的。当使用 'hash' 或 'history' 来处理位置状态并且用户在比 /index 更深的路由上重新加载页面时 - 当前路由必须验证值,然后如果某个条件不匹配,则最终重定向到前一个(而确实验证属于前一条路线)。
长话短说,当前的路由验证应该依赖于前一个,并且应该重定向到满足所有条件的状态。
相反的顺序:
- 运输方式?(/#/delivery/method) 不->
- 计费方式?(/#/billing/method) 不->
- 邮寄地址?(/#/delivery/address) 不->
- 帐单地址 - (/#/billing/address) 请从这里开始。
期待看到一些 EmberJS 的人来解决问题:)