幾種比較常用的參數(shù)傳遞方式譬巫。
1吴攒、通過route傳遞
這種方法是在新建tabs類型的ionic項目中就使用到的桥帆。
在route中定義了喳整,進入頁面的路由接收參數(shù)
在界面中傳遞參數(shù)
或者在controller中使用代碼傳遞參數(shù)
$state.go('game-detail',{gameId:gameId})
都可是實現(xiàn)從A界面向B界面?zhèn)鬟f一個字符串類型的數(shù)據(jù),同樣的方法:/xxxx:/xxxx:/xxx就可以實現(xiàn)向B界面?zhèn)鬟f多個字符串參數(shù)虾攻。
優(yōu)點是代碼簡單铡买,傳遞數(shù)據(jù)通過分享鏈接返回,數(shù)據(jù)不會丟失霎箍。
缺點是將數(shù)據(jù)放到url地址中奇钞,使得訪問地址過長。若傳遞多個參數(shù)漂坏。在微信分享地址放回是可能導致重定向地址錯誤景埃。
切忌使用這個方法傳遞對象缀壤,雖然可以實現(xiàn),但是會有一個非常長的url地址纠亚。
2、通過$rootScope傳遞參數(shù)
這個更簡單點筋夏,在A蒂胞、B界面中注入$rootScope,在A界面使用$rootScope.data={xxx:xxx}||"xxxx".在B界面直接使用$rootScope.data
優(yōu)點是使用便捷条篷,高效快速骗随,不止能傳遞字符串還能傳遞對象。在需要傳遞較大數(shù)據(jù)量時赴叹,挺好用的鸿染。
缺點是代碼隨意,不規(guī)范乞巧,到處都是全局變量不好維護涨椒,數(shù)據(jù)常駐內存占用空間。數(shù)據(jù)保存在本地通過分享鏈接返回數(shù)據(jù)丟失绽媒。
這個方法不止可以用來傳遞參數(shù)蚕冬,活用于公共業(yè)務和公共模塊的處理,也非常好用是辕。
但是切忌過于依賴囤热,這個技巧,不然把大量的代碼寫在run中获三,會影響項目的啟動旁蔼。
比如通用的loading,可以寫在這里疙教,只要項目啟動了這兩個模塊就加載了棺聊。
然后再需要的地方$rootScope.$broadcast('loading:show');就可以了。同樣的在這里定義$rootScope.fun = func(),也可在全局調用$rootScope.fun()
注意切忌把太多的業(yè)務放在這里贞谓,后期代碼調整和業(yè)務修改躺屁,真的很悲催。
3经宏、通過service傳遞和方法2差不多犀暑,就是需要多謝一下代碼,優(yōu)缺點也類似烁兰。但是比方法2更加的規(guī)范耐亏,符合angularjs的設計規(guī)范,
不在controller中處理業(yè)務沪斟,而是交由服務處理广辰。就是A界面引用C服務的setData暇矫,B界面引用C服務的getData。
最好的方法择吊,忘記說了李根,通過route傳遞一個key,然后需要服務端配合几睛。通過這個key去獲取整個對象數(shù)據(jù)房轿,這樣子,不管是分享回來沒數(shù)據(jù)還是url過長所森,都可以決解