欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

微信小程序入門教程之三:腳本編程 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當(dāng)前位置>首頁 » 新聞資訊 » 小程序相關(guān) >

微信小程序入門教程之三:腳本編程

發(fā)表時間:2021-1-5

發(fā)布人:葵宇科技

瀏覽次數(shù):79


今天,接著往下講,教大家為小程序加入 JavaScript 腳本,做出動態(tài)效果,以及如何跟用戶互動。學(xué)會了腳本,就能做出復(fù)雜的頁面了。

本篇的難度要大于前兩篇,如果覺得不好理解,可以先跟著例子,動手做一遍,然后再讀文字說明,可能就容易理解了。

一、數(shù)據(jù)綁定

前面的所有示例,小程序的頁面都是寫死的,也就是頁面內(nèi)容不會變。但是,頁面數(shù)據(jù)其實可以通過腳本傳入,通過腳本改變頁面,實現(xiàn)動態(tài)效果。

小程序提供了一種特別的方法,讓頁面可以更方便地使用腳本數(shù)據(jù),叫做"數(shù)據(jù)綁定"(data binding)。

所謂"數(shù)據(jù)綁定",指的是腳本里面的某些數(shù)據(jù),會自動成為頁面可以讀取的全局變量,兩者會同步變動。也就是說,腳本里面修改這個變量的值,頁面會隨之變化;反過來,頁面上修改了這段內(nèi)容,對應(yīng)的腳本變量也會隨之變化。這也叫做 MVVM 模式。

下面看一個例子。打開home.js文件,改成下面這樣。


Page({
  data: {
    name: '張三'
  }
});

上面代碼中,Page()方法的配置對象有一個data屬性。這個屬性的值也是一個對象,有一個name屬性。數(shù)據(jù)綁定機制規(guī)定,data對象的所有屬性,自動成為當(dāng)前頁面可以讀取的全局變量。也就是說,home頁面可以自動讀取name變量。

接著,修改home.wxml文件,加入name變量。


<view>
  <text class="title">hello {{name}}text>
view>

上面代碼中,name變量寫在{{...}}里面。這是小程序特有的語法,兩重大括號表示,內(nèi)部不是文本,而是 JavaScript 代碼,它的執(zhí)行結(jié)果會寫入頁面。因此,{{name}}表示讀取全局變量name的值,將這個值寫入網(wǎng)頁。

注意,變量名區(qū)分大小寫,name和Name是兩個不同的變量名。

開發(fā)者工具導(dǎo)入項目代碼,頁面渲染結(jié)果如下。

可以看到,name變量已經(jīng)自動替換成了變量值"張三"。

這個示例的完整代碼,可以查看代碼倉庫。

頁面和腳本對于變量name是數(shù)據(jù)綁定關(guān)系,無論哪一方改變了name的值,另一方也會自動跟著改變。后面講解到事件時,會有雙方聯(lián)動的例子。

二、全局?jǐn)?shù)據(jù)

數(shù)據(jù)綁定只對當(dāng)前頁面有效,如果某些數(shù)據(jù)要在多個頁面共享,就需要寫到全局配置對象里面。

打開app.js,改寫如下。


App({
  globalData: {
    now: (new Date()).toLocaleString()
  }
});

上面代碼中,App()方法的參數(shù)配置對象有一個globalData屬性,這個屬性就是我們要在多個頁面之間分享的值。事實上,配置對象的任何一個屬性都可以共享,這里起名為globalData只是為了便于識別。

然后,打開home.js,改成下面的內(nèi)容,在頁面腳本里面獲取全局對象。


const app = getApp();

Page({
  data: {
    now: app.globalData.now
  }
});

上面代碼中,getApp()函數(shù)是小程序原生提供的函數(shù)方法,用于從頁面獲取 App 實例對象。拿到實例對象以后,就能從它上面拿到全局配置對象的globalData屬性,從而把app.globalData.now賦值給頁面腳本的now屬性,進(jìn)而通過數(shù)據(jù)綁定機制,變成頁面的全局變量now。

最后,修改一下頁面代碼home.wxml。


<view>
  <text class="title">現(xiàn)在是 {{now}}text>
view>

開發(fā)者工具導(dǎo)入項目代碼,頁面渲染結(jié)果如下。

可以看到,頁面讀到了全局配置對象app.js里面的數(shù)據(jù)。

這個示例的完整代碼,可以查看代碼倉庫。

三、事件

事件是小程序跟用戶互動的主要手段。小程序通過接收各種用戶事件,執(zhí)行回調(diào)函數(shù),做出反應(yīng)。

小程序的常見事件有下面這些。

  • tap:觸摸后馬上離開。
  • longpress:觸摸后,超過 350ms 再離開。如果指定了該事件的回調(diào)函數(shù)并觸發(fā)了該事件,tap事件將不被觸發(fā)。
  • touchstart:觸摸開始。
  • touchmove:觸摸后移動。
  • touchcancel:觸摸動作被打斷,如來電提醒,彈窗等。
  • touchend:觸摸結(jié)束。

上面這些事件,在傳播上分成兩個階段:先是捕獲階段(由上層元素向下層元素傳播),然后是冒泡階段(由下層元素向上層元素傳播)。所以,同一個事件在同一個元素上面其實會觸發(fā)兩次:捕獲階段一次,冒泡階段一次。詳細(xì)的介紹,請參考我寫的事件模型解釋。

小程序允許頁面元素,通過屬性指定各種事件的回調(diào)函數(shù),并且還能夠指定是哪個階段觸發(fā)回調(diào)函數(shù)。具體方法是為事件屬性名加上不同的前綴。小程序提供四種前綴。

  • capture-bind:捕獲階段觸發(fā)。
  • capture-catch:捕獲階段觸發(fā),并中斷事件,不再向下傳播,即中斷捕獲階段,并取消隨后的冒泡階段。
  • bind:冒泡階段觸發(fā)。
  • catch:冒泡階段觸發(fā),并取消事件進(jìn)一步向上冒泡。

下面通過一個例子,來看如何為事件指定回調(diào)函數(shù)。打開home.wxml文件,改成下面的代碼。


<view>
  <text class="title">hello {{name}}text>
  <button bind:tap="buttonHandler">點擊button>
view>

上面代碼中,我們?yōu)轫撁婕由狭艘粋€按鈕,并為這個按鈕指定了觸摸事件(tap)的回調(diào)函數(shù)buttonHandler,bind:前綴表示這個回調(diào)函數(shù)會在冒泡階段觸發(fā)(前綴里面的冒號可以省略,即寫成bindtap也可以)。

回調(diào)函數(shù)必須在頁面腳本中定義。打開home.js文件,改成下面的代碼。


Page({
  data: {
    name: '張三'
  },
  buttonHandler(event) {
    this.setData({
      name: '李四'
    }),
  }
});

上面代碼中,Page()方法的參數(shù)配置對象里面,定義了buttonHandler(),這就是

相關(guān)案例查看更多

相關(guān)閱讀