日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ember.js 入门指南——路由切换的终止和回跳

發布時間:2024/9/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ember.js 入门指南——路由切换的终止和回跳 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

????在路由的切換過程中,Ember路由器會通過回調(beforeModel、model、afterModel、redirect)解析一個transition對象到切換的下一路由中。任何一個回調都可以通過傳遞過來的transition參數獲取transition對象,然后使用這個對象調用transition.abort()方法立即終止路由的切換,如果你的程序保存了這個對象(transition對象)之后你還可以在需要的地方取出來并調用transition.retry()方法激活路由切換這個動作,最終實現路由的切換。

??????

1,通過調用willTransition方法阻止路由切換

?????? 當用戶通過{{link-to}}助手、transition方法或者直接執行URL來切換路由,當前路由會自動執行willTransition方法。每個活動的路由都可以決定是否執行切換路由。

?????? 想象一下,在當前路由所渲染的頁面是一個比較復雜的表單,并且用戶已經填寫了很多信息,但是用戶很可能無意中點擊了返回或者關閉頁面,這就導致了用戶填寫的信息直接丟失了,這樣的用戶體驗并不好。此時我們可以通過使用willTransition方法阻止用戶的行為并提示用戶是否確認離開本頁面。

?????? 為了驗證這個特性我們需要創建好測試所需的文件。

?????? ember g controller form

?????? ember g route form

?

?????? 首先在controller增加測試數據。

//??app/controllers/form.jsimport?Ember?from?'ember';export?default?Ember.Controller.extend({firstName:?'chen',lastName:?'ubuntuvim' });

再創建一個模擬用戶填寫信息的模板。

<form><div><label?for="exampleInputEmail1">FirstName</label>{{input?type="text"?id="exampleInputEmail1"?placeholder="FirstName"?value=firstName}}</div><div><label?for="exampleInputPassword1">LashName</label>{{input?type="text"?id="exampleInputPassword1"?placeholder="LashName"?value=lastName}}</div><button?type="submit"?class="btn?btn-primary">Submit</button> </form><br><br> {{#link-to?'about'}}<b>轉到about</b>{{/link-to}}

關鍵部分來了,我們在路由里添加willTransition方法。

//??app/routes/form.jsimport?Ember?from?'ember';export?default?Ember.Route.extend({actions:?{willTransition:?function(transition)?{//??如果是使用this.get('key')獲取不了頁面輸入值,因為不是通過action提交表單的var?v?=?this.controller.get('firstName');//??任意獲取一個作為判斷表單輸入值if?(v?&&?!confirm("你確定要離開這個頁面嗎??"))?{transition.abort();}?else?{return?true;}}} });

? ? ? ?運行:http://localhost:4200/form,先點擊“submit”提交表單,可以看到表單順利提交沒有任何問題,然后再點擊轉到about”,你可以看到會彈出如下提示框。

接著,點擊取消頁面沒有跳轉,如果是點擊確定頁面會跳轉到about頁面。

再接著,把FirstName輸入框的內容清空然后點到about”面直接跳到了about面。

?????? 很多博客網站都是有這個功能的!!

??????

2,在beforeModel、modelafterModel回調中阻止路由切換

beforeModel(transition)?{if?(new?Date()?>?new?Date('January?1,?1980'))?{alert('Sorry,?you?need?a?time?machine?to?enter?this?route.');transition.abort();} }

? ? ? ?這段代碼演示的就是在beforeModel回調中使用abort方法阻止路由的切換。代碼比較簡單我就不做例子演示了!

3,路由會跳(retrying)

文件準備工作:

ember g controller auth

ember g route auth

ember g controller login

ember g route login

?

?????? 下面是演示用到的代碼。

//??app/controllers/login.jsimport?Ember?from?'ember';export?default?Ember.Controller.extend({userIsLogin:?false,actions:?{//?獲取跳轉過來之前路由中設置的transition對象var?transitionObj?=?this.get('transitionObj');if?(transitionObj)?{this.set("transitionObj",?null);this.set('userIsLogin',?true);??//?登錄成功的標記transitionObj.retry();??//??回到登錄前的頁面}?else?{//??轉回首頁this.transitionToRoute('index');}} }); //??app/routes/auth.jsimport?Ember?from?'ember';export?default?Ember.Route.extend({beforeModel(transition)?{//?在名為auth的controller設置了userIsLogin為false,默認是未登錄if?(!this.controllerFor("login").get('userIsLogin'))?{var?loginController?=?this.controllerFor("login");//?保存transition對象loginController.set("transitionObj",?transition);console.log('未授權轉到登錄頁面...');this.transitionTo("login");??//?跳轉到路由login}?else?{}} }); <!--??//app/templates/login.hbs?--><form?{{action?'login'?on='submit'}}><div?class="form-group"><label?for="exampleInputEmail1">FirstName</label>{{input?type="text"?class="form-control"?id="exampleInputEmail1"?placeholder="FirstName"?value=username}}</div><div?class="form-group"><label?for="exampleInputPassword1">LashName</label>{{input?type="text"?class="form-control"?id="exampleInputPassword1"?placeholder="LashName"?value=password}}</div><button?type="submit"?class="btn?btn-primary">Submit</button> </form> {{!?app/templates/auth.hbs}}授權頁面,登錄才能看,并且登錄成功后調回到這里。。。

這4段代碼模擬一個需要授權才能查看的頁面,還沒登錄的用戶會跳轉到登錄頁面,登錄成功之后會跳轉會到登錄前的查看的授權頁面。

這種方式在很多的網站都使用到,是一個非常常見的功能。



轉載于:https://my.oschina.net/ubuntuvim/blog/511599

總結

以上是生活随笔為你收集整理的Ember.js 入门指南——路由切换的终止和回跳的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久精视频| 欧美综合激情 | 黄网在线| 熟女肥臀白浆大屁股一区二区 | 亚欧美一区二区三区 | 九九精品视频免费 | 国产伦精品一区二区三区免费 | 可以免费看的av毛片 | av网址免费在线观看 | 国产精品久久久久久久久岛 | 日韩在线视频在线 | 黄色伊人 | 黄色日皮视频 | 香蕉网站在线观看 | 韩国av三级| 欧美亚洲专区 | 久久发布国产伦子伦精品 | www.桃色av嫩草.com | 国内自拍第二页 | 久久撸视频 | 欧美乱三级 | 青草成人免费视频 | 欧日韩不卡视频 | 欧美成人精品一区二区 | 裸体视频软件 | 国产日韩精品一区 | 精品少妇一区二区三区在线观看 | 4438x全国最大成人网 | 久久精品视频1 | 欧美久久精品 | 伊人网综合网 | 极品美妇后花庭翘臀娇吟小说 | 亚州av在线 | 欧美拍拍视频 | 性xxxxx大片免费视频 | 欧美日韩一级二级三级 | 国产精品情侣 | 国产一级色 | a级在线观看 | av黄色片| 日韩1页| 无码一区二区波多野结衣播放搜索 | 一区二区中文字幕 | 狠狠干天天射 | 天堂av片 | 男女搞网站 | 中国av一区二区三区 | 精品蜜桃一区二区三区 | 超碰97成人 | 亚洲AV午夜福利精品一级无码 | 国产成人超碰人人澡人人澡 | 尤果网福利视频在线观看 | 天天射影院 | 欧美123区| 九九精品久久 | 欧美高清x | 欧美极品第一页 | av超碰在线观看 | 老司机激情视频 | av三级在线播放 | 乱lun合集小可的奶水 | 99ri视频 | 成人毛片在线观看 | 姐姐的朋友2在线 | 久久久精品人妻一区二区三区四 | 麻豆一区二区三区 | 天天看夜夜操 | 清清草视频 | 欧美夜夜夜 | 婷婷亚洲综合五月天小说 | 夜夜高潮夜夜爽国产伦精品 | 亚洲三区在线观看无套内射 | 日韩久久电影 | 欧av在线 | 在线欧美一区 | 久国产| a免费观看 | a天堂亚洲 | 韩国精品av | 国产成人精品在线视频 | 国产精品suv一区二区三区 | 午夜黄色小视频 | 欧美a级片在线观看 | 国产在视频线精品视频 | 国产经典一区二区三区 | www.夜夜操| 色伊人久久 | 亚洲一级免费视频 | 91免费视频入口 | 丰满肉嫩西川结衣av | 日韩视频一区二区在线观看 | 在线观看亚洲av每日更新 | 欧美激情性做爰免费视频 | av综合久久| 欧美a性 | 人人模人人爽 | 91九色在线 | 亚州综合网 | 精品三级av |