1.索引
1.對(duì)象索引是屬性名
2.數(shù)組索引是下標(biāo)
3.多重索引,典型的json數(shù)據(jù)就是
2.全選聯(lián)動(dòng)按鈕
1.數(shù)據(jù)渲染復(fù)選框的布爾值
3.動(dòng)態(tài)選中樣式
1.在網(wǎng)頁(yè)中的應(yīng)有場(chǎng)景非常多。有tabbar、自定義復(fù)選框等。
2.需要改變的樣式有:選中圖片、背景色、字體顏色、邊框顏色等。
4.promise封裝網(wǎng)絡(luò)請(qǐng)求為模塊工具
function getStorage(key){//獲取數(shù)據(jù)緩存
? return new Promise(function (resolve, reject) {
? ? wx.getStorage({
? ? ? key: key,
? ? ? success: resolve,
? ? ? fail: reject
? ? });
? });
};
function getNetJson(url, params){//發(fā)送數(shù)據(jù)請(qǐng)求
? ? return new Promise(function(resolve, reject){
? ? ? wx.request({
? ? ? ? url: url,
? ? ? ? data: params,
? ? ? ? header: {
? ? ? ? ? 'content-type': 'json' // 默認(rèn)值
? ? ? ? },
? ? ? ? success:resolve,
? ? ? ? fail: reject
? ? ? });
? ? });
};
module.exports = {//暴露模塊接口
? getStorage,
? getNetJson
};
var app = getApp();//獲取頂層實(shí)例
app.wxapis.getStorage('board_data').then()//調(diào)用模塊接口
const wxapis = require('./utils/wxapis.js');//獲取模塊(app.js)
App({
? wxapis
})
getCache() {//用于判斷是否有無(wú)緩存
? ? return new Promise((resolve, reject) => {
? ? ? app.wxapis.getStorage('board_data').then((storage_res) => {
? ? ? ? // console.log(storage_res);
? ? ? ? if (storage_res.data.expires < Date.now()) {
? ? ? ? ? // 因?yàn)橐呀?jīng)過(guò)期,所以你調(diào)用的結(jié)果是null
? ? ? ? ? return resolve(null);
? ? ? ? } else {
? ? ? ? ? return resolve(storage_res.data.all_info);
? ? ? ? }
? ? ? }).catch(function (err) {
? ? ? ? return resolve(null);
? ? ? });
? ? });
? },
?getNetworkData() {?// 用來(lái)獲取請(qǐng)求網(wǎng)絡(luò)數(shù)據(jù)
? ? var promises = this.data.all_info.map(function(info){//數(shù)組的map方法返回
? ? ? var url = "https://api.douban.com/v2/movie/" + info.requestUrl;
? ? ? return app.wxapis.getNetJson(url, { count: 10 }).then((res) => {
? ? ? ? console.log('進(jìn)行了一次網(wǎng)絡(luò)請(qǐng)求');
? ? ? ? ? info.movies = res.data.subjects;
? ? ? ? ? return info;
? ? ? });
? ? });
Promise.all(promises).then((infos)=>{//promise解決多條數(shù)據(jù)請(qǐng)求,最大并發(fā)限制是十條
? ? ? console.log(infos);
? ? ? wx.setStorage({
? ? ? ? key: 'board_data',
? ? ? ? data: {
? ? ? ? ? all_info: infos,
? ? ? ? ? expires: Date.now() + 1000 * 60 * 60 * 24
? ? ? ? },
? ? ? });
? ? ? this.setData({
? ? ? ? all_info: infos
? ? ? });
? ? });
? },
onLoad: function (options) {//頁(yè)面加載,判斷是否有緩存。有則獲取,無(wú)則請(qǐng)求
? ? // this.getCache();
? ? this.getCache().then((result) => {
? ? ? if (!result) {
? ? ? ? //沒(méi)結(jié)果
? ? ? ? this.getNetworkData();
? ? ? } else {
? ? ? ? this.setData({
? ? ? ? ? all_info: result
? ? ? ? });
? ? ? }
? ? }).catch((err) => {
? ? ? this.getNetworkData();
? ? });
? },
5.跨頁(yè)面?zhèn)髦?/h2>
1 . 用 navigator標(biāo)簽傳值或 wx.navigator
2.實(shí)例地址:http://www.lxweimin.com/p/0135769db89c
6.tabBar欄中頁(yè)面?zhèn)髦?/h2>
a.在app.js中定義一個(gè)全局屬性,他的屬性值可用來(lái)保存全局?jǐn)?shù)據(jù)。
b.用全局屬性在onload函數(shù)中進(jìn)行傳值
7.列表頁(yè)跳轉(zhuǎn)詳情頁(yè)傳id值
a.bindtap結(jié)合data-*把當(dāng)前對(duì)象的id值獲取到
b.navigator的url拼接參數(shù)傳id值
8.Date.now()和new Date()的區(qū)別
1.
Date.now()是構(gòu)造函數(shù)的原型對(duì)象方法???
2.new Date()是構(gòu)造函數(shù)實(shí)例化一個(gè)對(duì)象???
9.深拷貝&淺拷貝
1.有時(shí)候需要深拷貝一份給另外一個(gè)變量,不改變之前指針對(duì)應(yīng)的對(duì)象
2.此時(shí)就需要用到深拷貝。
3.數(shù)組的filter返回一個(gè)新數(shù)組,不改變?cè)瓉?lái)的數(shù)組結(jié)構(gòu),應(yīng)該是深拷貝。
4.
在js中,數(shù)組和對(duì)象的復(fù)制如果使用=號(hào)來(lái)進(jìn)行復(fù)制,那只是淺拷貝
5.數(shù)組的深拷貝方法
? ? ? ? ? ? - ? ?slice(0)
? ? ? ? ? ? -????
arr.concat()
? ? ? ? ? ? - ? ?for循環(huán),依次push到一個(gè)空對(duì)象中
? ? ? ? ? ? - ? ?es6擴(kuò)展運(yùn)算符實(shí)現(xiàn):
var arr = [1,2,3,4,5] ? ? ? ? ? var [ ...arr2 ] = arr
6.對(duì)象的深拷貝方法
? ? ? ? ? ? - 用到再說(shuō)
1 . 用 navigator標(biāo)簽傳值或 wx.navigator
2.實(shí)例地址:http://www.lxweimin.com/p/0135769db89c
a.在app.js中定義一個(gè)全局屬性,他的屬性值可用來(lái)保存全局?jǐn)?shù)據(jù)。
b.用全局屬性在onload函數(shù)中進(jìn)行傳值
7.列表頁(yè)跳轉(zhuǎn)詳情頁(yè)傳id值
a.bindtap結(jié)合data-*把當(dāng)前對(duì)象的id值獲取到
b.navigator的url拼接參數(shù)傳id值
8.Date.now()和new Date()的區(qū)別
1. Date.now()是構(gòu)造函數(shù)的原型對(duì)象方法???
2.new Date()是構(gòu)造函數(shù)實(shí)例化一個(gè)對(duì)象???
9.深拷貝&淺拷貝
1.有時(shí)候需要深拷貝一份給另外一個(gè)變量,不改變之前指針對(duì)應(yīng)的對(duì)象
2.此時(shí)就需要用到深拷貝。
3.數(shù)組的filter返回一個(gè)新數(shù)組,不改變?cè)瓉?lái)的數(shù)組結(jié)構(gòu),應(yīng)該是深拷貝。
4. 在js中,數(shù)組和對(duì)象的復(fù)制如果使用=號(hào)來(lái)進(jìn)行復(fù)制,那只是淺拷貝
5.數(shù)組的深拷貝方法
? ? ? ? ? ? - ? ?slice(0)
? ? ? ? ? ? -???? arr.concat()
? ? ? ? ? ? - ? ?for循環(huán),依次push到一個(gè)空對(duì)象中
? ? ? ? ? ? - ? ?es6擴(kuò)展運(yùn)算符實(shí)現(xiàn): var arr = [1,2,3,4,5] ? ? ? ? ? var [ ...arr2 ] = arr
6.對(duì)象的深拷貝方法
? ? ? ? ? ? - 用到再說(shuō)