一:?jiǎn)柎饳C(jī)器人實(shí)例主要功能風(fēng)格類似聊天窗口用戶發(fā)送信息時(shí),調(diào)用機(jī)器人接口返回回答信息將所有信息記錄到本地存儲(chǔ)中每次打開(kāi)都顯示最近的問(wèn)答數(shù)據(jù)當(dāng)發(fā)送空信息時(shí)有相應(yīng)提示先看 ...
一:?jiǎn)柎饳C(jī)器人
wx.showToast({
title: '請(qǐng)輸入您的問(wèn)題',
icon: 'loading'
});
說(shuō)明:icon
可以接收loading
、success
(默認(rèn))
setContent2Storage: function(data) {
wx.setStorage({
key: 'content',
data: data,
success: function(res){
// success
//console.log("=====保存成功=====");
}
})
}
說(shuō)明:數(shù)據(jù)存儲(chǔ)是以鍵值對(duì)的形式存在,key
表示鍵,data
表示值,可以是字段串,也可以是對(duì)象
loadContent: function() {
var page = this;
wx.getStorage({
key: 'content',
success: function(res){
// success
console.log(res);
page.setData({content:res.data});
}
})
}
說(shuō)明:上面的setContent2Storeage
和loadContent
都是屬于自己在本例中的封裝,微信所封裝的方法分別是wx.setStorage
和wx.getStorage
,通過(guò)鍵即可獲取出數(shù)據(jù),并將數(shù)據(jù)設(shè)置到page的data中,這樣即可更新頁(yè)面中的數(shù)據(jù)。
index.wxml
<view class="main-container">
<scroll-view class="content" scroll-y="true">
<import src="../templates/me-tpl"/>
<import src="../templates/robot-tpl"/>
<block wx:for="{{content}}" wx:key="item">
<template wx:if="{{item.isRobot}}" is="robot-tpl" data="{{item}}"/>
<template wx:if="{{!item.isRobot}}" is="me-tpl" data="{{item}}"/>
</block>
</scroll-view>
<view class="sender-container">
<view style="flex-grow:1">
<input placeholder="輸入您的問(wèn)題" value="{{q}}" bindinput="inputEvent"/>
</view>
<view>
<button type="primary" bindtap="queryAnswer">發(fā)送</button>
</view>
</view>
</view>
說(shuō)明:在這個(gè)實(shí)例中增加使用了scroll-view
可滾動(dòng)的視圖容器。詳細(xì)說(shuō)明可參考官方scroll-view,也使用了wx:if
用于判斷該使用哪個(gè)視圖模板
<template name="me-tpl">
<view class="me">
<image src="../imgs/me.png"/>
<view>
<text class="date">{{item.date}}</text>
<text>{{item.text}}</text>
</view>
</view>
</template>
二:笑話大全以上只是貼出了一些相對(duì)關(guān)鍵的代碼,直接使用無(wú)法運(yùn)行。
機(jī)器人的接口參考了聚合數(shù)據(jù),也感謝聚合數(shù)據(jù)為我們提供了各種接口。
本文章源代碼:https://github.com/zsl131/wx-app-study/tree/master/robot
源碼下載:robot.zip
tabbar
做底部導(dǎo)航菜單onReachBottom
觸發(fā)底部事件util.js
中
在app.json
中增加以下代碼
"tabBar": {
"color": "#888",
"selectedColor": "#444",
"list": [{
"pagePath": "pages/index/index",
"text": "笑話",
"iconPath": "pages/imgs/joke.png",
"selectedIconPath": "pages/imgs/joke2.png"
}, {
"pagePath": "pages/pictures/main",
"text": "趣圖",
"iconPath": "pages/imgs/pic.png",
"selectedIconPath": "pages/imgs/pic2.png"
}]
}
說(shuō)明:tabBar
是一個(gè)數(shù)據(jù),只能配置至少2個(gè)、最多5個(gè)tab,tab按數(shù)組順序排序,更多詳情說(shuō)明請(qǐng)參考官方文檔tabBar
var util = require("../../utils/util.js");
var app = getApp();
Page({
data:{
jokes:[],
page: 1,
pagesize:15
},
onLoad:function(options){
// 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面加載
this.loadJokes();
},
onReachBottom: function() {
// 頁(yè)面上拉觸底事件的處理函數(shù)
this.setData({page: this.data.page+1});
this.loadJokes();
},
loadJokes: function() {
var that = this;
var key = app.globalData.appkey;
var url = "http://japi.juhe.cn/joke/content/text.from";
wx.request({
url: url,
data: {
key: key,
page: that.data.page,
pagesize: that.data.pagesize
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
// header: {}, // 設(shè)置請(qǐng)求的 header
success: function(res){
// success
//console.log(res);
that.rebuildData(res.data.result.data);
}
})
},
rebuildData: function(data) {
var tmp_data = [];
for(var i=0; i<data.length; i++) {
var d = data[i];
tmp_data.push({"updatetime":d.updatetime, "content":util.replaceAll(d.content, " ", "\r\n")});
}
//console.log(tmp_data);
//tmp_data = tmp_data.push(this.data.jokes);
this.setData({jokes: this.data.jokes.concat(tmp_data)});
}
})
說(shuō)明:在這里使用了require
來(lái)引用外部js,util.replaceAll
就是引用的外部函數(shù)。this.data.jokes.concat(tmp_data)
將原始數(shù)據(jù)與最新數(shù)據(jù)組合在一起,實(shí)現(xiàn)無(wú)刷新顯示。
function replaceAll(source, oldStr, newStr) {
while (source.indexOf(oldStr) >= 0){
source = source.replace(oldStr, newStr);
}
return source;
}
module.exports = {
formatTime: formatTime,
replaceAll: replaceAll
}
<view class="container">
<import src="../templates/joke-tpl"/>
<block wx:for="{{jokes}}" wx:key="item">
<template is="joke-tpl" data="{{item, index}}"/>
</block>
</view>
<template name="joke-tpl">
<view class="single-joke">
<view><view class="num">{{index+1}}</view>{{item.updatetime}}</view>
<text>{{item.content}}</text>
</view>
</template>
以上只是貼出了一些相對(duì)關(guān)鍵的代碼,直接使用無(wú)法運(yùn)行。
機(jī)器人的接口參考了聚合數(shù)據(jù),也感謝聚合數(shù)據(jù)為我們提供了各種接口。
本文章源代碼:https://github.com/zsl131/wx-app-study/tree/master/joke
源碼下載:joke.zip
工作日 8:30-12:00 14:30-18:00
周六及部分節(jié)假日提供值班服務(wù)