EmberJS 路由器通过willTransition防止转换
2018-01-04 11:49 更新
描述
如果URL更改,尝试转换将触发当前活动的路由,即willTransition操作。这调用最叶路由来决定是否应该发生转换。
语句
Ember.Route.extend({ actions: { willTransition: function(transition) { //handle the transition } } });
例子
<!DOCTYPE html> <html> <head> <title>Emberjs Preventing Transitions Via willTransition</title> <!-- CDN's --> <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/3.0.1/handlebars.min.js"></script> <script src="https://code.jquery.com/jquery-2.1.3.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/ember.js/1.10.0/ember.min.js"></script> <script src="https://builds.emberjs.com/tags/v1.10.0-beta.3/ember-template-compiler.js"></script> <script src="https://builds.emberjs.com/release/ember.debug.js"></script> <script src="https://builds.emberjs.com/beta/ember-data.js"></script> </head> <body> <script type="text/x-handlebars"> <h1>Transactions</h1> <!-- link to the trans template --> {{link-to 'Click For Transaction' 'trans'}} </script> <script type="text/x-handlebars" data-template-name="trans"> {{outlet}} </script> <script type="text/javascript"> App = Ember.Application.create(); App.Router.map(function() { //trans route this.route('trans'); }); App.IndexRoute = Ember.Route.extend({ actions:{ willTransition: function(transition){ //decalring the self variable var self = this; //checking for self var: is false if(!this.get('allowTransition')){ document.write('<b><font color="red">'); //display the message document.write("transition abort"); document.write('</font><br>'); transition.abort();//calling abort function Ember.run.later(function(){ //setting the self var true self.set('allowTransition', true); document.write('<b><font color="blue">'); //display message document.write("transition retry"); document.write('</font>'); transition.retry();//calling retry function }, 500); } } } }); </script> </body> </html>
输出
让我们执行以下步骤,看看上面的代码如何工作:
将上面的代码保存在routing_prvntng_trans.html文件中
在浏览器中打开此HTML文件。
以上内容是否对您有帮助:
更多建议: