前兩天分別實現了商城應用的首頁和商品詳情頁面,今天要分享新的內容,就是這兩個頁面之間的相互跳轉和傳遞參數。
首先我們需要兩個頁面。如果你的項目中還沒有第二個頁面,可以右鍵cangjie文件夾新建倉頡文件:
新建的文件里面沒什么內容,我們給他添加上4個基礎的引用,再簡單添加個按鈕:
package ohos_app_cangjie_entry.page
import ohos.base.*
import ohos.component.*
import ohos.state_manage.*
import ohos.state_macro_manage.*
@Entry
@Component
public class testPage {func build() {Column {Button('返回')}}
}
頁面跳轉和返回
倉頡語言有和ArkTs相同的路由Router,不過用法不太一樣。在跳轉頁面的時候,push使用的url,不再是路徑,而是直接寫頁面名稱,不用管的路徑。比如我剛才新建了頁面testPage,跳轉的時候就是:
Router.push(url: 'testPage')
當頁面需要返回,使用Router.back(),back中可以寫url參數,也可以不寫。
要注意,這里我們說的頁面名稱,并不是文件的名字,而是頁面的名稱。比如index.cj文件,它的頁面名稱是EntryView而不是index。
傳遞參數
頁面跳轉通常伴隨著傳遞參數,在使用push跳轉的時候能看到和url并列的還有一個params用來傳遞參數,它支持兩種類型,string和JsonObject。
只需傳遞一個參數的時候我們可以直接傳遞string類型的參數:
Router.push(url: 'testPage', params: '100')
在下一個頁面接收的參數的時候也要使用Router:
Router.getParams()
同樣的,在返回上一級頁面的時候也可以同樣的方式傳遞參數,接收參數也是一樣的。
Router.back(url: 'EntryView',params:'參數2')
在需要傳遞多個參數的時候,我們需要使用JsonObject類型,這是一個全新的數據類型,幽藍君使用它的時候頗費了一番周折。好在看了這篇文章的友友不用再浪費時間了,它是這樣用的:
var map = JsonObject()
map.put("name", JsonString("襯衫"))
map.put(“size”, JsonString(“xl”))
Router.push(url: 'testPage', params: map)
在下一個頁面接收多個參數時,要使用Router.getParamsObject():
let obj = Router.getParamsObject()
let a = obj['name']
AppLog.info('接收多個參數:' + a.toString())
以上就是倉頡開發語言中的頁面跳轉和傳參。#HarmonyOS語言##倉頡##購物#