日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

小程序|頁面傳參的三種方式

作者:m0_59259076 更新時間: 2023-10-11 編程語言

要正確展示文章詳情頁面的內容,首先需要將文章的id號由post頁面傳遞到post-detail頁面,這樣,post-detail頁面才能知曉它要顯示哪篇文章。這涉及頁面間的參數傳遞與通信。目前,在MNA框架中有以下幾種參數傳遞方式:

  1. 使用全局變量(關于全局變量,本書后面的章節中會講到);
  2. 使用緩存;
  3. 通過頁面導航url的query參數傳遞。

基本上參數的傳遞只有以上3種方式,其他的比如像事件信號的傳參方式(一個頁面emit
發送信號,一個頁面on監聽信號,這種在AngularJS里很常見的傳參方式,小程序是不能天
然支持的),其實都是這些基本思路的變種。
開發者在學習完緩存后應該很容易想到。其實,使用緩存數據庫存儲data,js初始化數據,又在post.js中讀取緩存數據,這其實就是頁面間的參數傳遞。仔細想想,是不是這樣?
1、2兩種都涉及全局變量,筆者個人不推薦這種污染全局的傳參方式,而且我們的需求僅僅是兩個頁面間傳遞參數,完全不需要干擾全局。所以,選用方法3來做頁面間的參數傳遞。
要想在post,js中獲取到postId,就必須知道當前點擊的文章是哪一篇文章。我們首先將postld綁定到每一篇文章的wxml中,使postId成為文章wxml的一個屬性。注意,postId已經定義在了data.js中了。

1、綁定postId

  <block wx:for="{{ postList }}" wx:for-item="item" wx:for-index="idx">
  <!-- 不要再block標簽或tempale標簽上綁定事件!! -->
    <view catchtap="onTapToDetail" data-post-id="{{ item.postId }}">
      <template is="postItemTpl" data="{{ ...item }}" />
    </view>
  </block>

2、在post.js中添加如下代碼:?

  onTapToDetail:function(event){
    // 下面這行代碼獲取postId:
    var postId=event.currentTarget.dataset.postId;
    console.log(postId);
    wx.navigateTo({
      url: './post-detail/post-detail?id=' + postId,
    });
  },

控制臺顯示postId,說明id確實已經傳過來了。?

每篇文章的id都被綁定在了該文章的view容器上,剩下的工作就是,如何獲取當前文章的id了。

上述代碼中,我們通過event.currentTarget.dataset.postId,這段代碼成功地拿到了當前文章
的postId。
event事件對象是由MNA框架在調用onTapToDetail函數時傳遞的參數。在event事件對
象中,有一個currentTarget代表事件綁定的當前組件。
重點是dataset對象,dataset對象里包含當前組件中所有屬性名以data-開頭的自定義屬性
值。我們在代碼清單6-5中的view上綁定了data-post-id,所以通過dataset.postId將可以拿到
當前組件的postId。.
組件自定義屬性名有以下規則:

  1. 必須以data-開頭。
  2. 多個單詞由連字符“”鏈接。
  3. 單詞中最好不要有大寫字母,如果有大寫字母,除單詞第一個字母外,其余大寫字母
    將被轉化成小寫。
  4. 在js中獲取自定義屬性值時,多個單詞將被轉化駝峰命名。

舉例子:

組件的屬性定義
組件的自定義數據 dataset中變量名
data-post dataset.post
data-post-id dataset.postId
data-pOST-ID dataset.postId
data-postId dataset.postId

?我們只需要以這種格式傳給頁面(url的query參數)就好了:

      url: './post-detail/post-detail?id=' + postId,

原文鏈接:https://blog.csdn.net/m0_59259076/article/details/123575924

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新