如果URL更改,嘗試轉(zhuǎn)換將觸發(fā)當(dāng)前活動(dòng)的路由,即willTransition操作。這調(diào)用最葉路由來(lái)決定是否應(yīng)該發(fā)生轉(zhuǎn)換。
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>
讓我們執(zhí)行以下步驟,看看上面的代碼如何工作:
將上面的代碼保存在routing_prvntng_trans.html文件中
在瀏覽器中打開(kāi)此HTML文件。
更多建議: