Commit 46711318 by jscat

nyx weapp: 功能更新

1. 添加eventbus, 目的是实现多页面之间的数据同步
具体来说, 就是activity-info.wxml页面like数据更新之后, 会直接同步到my-collects.wxml和activity.wxml页面
parent 527705ae
// pages/activity/activity.js // pages/activity/activity.js
// pages/activity/activity.js // pages/activity/activity.js
const app = getApp() const app = getApp()
var config = wx.getStorageSync("config"); var config = wx.getStorageSync("config");
var util = require('./../../utils/util.js') var util = require('./../../utils/util.js')
var event = require('./../../utils/event.js')
Page({ Page({
...@@ -156,6 +157,25 @@ Page({ ...@@ -156,6 +157,25 @@ Page({
_this.getActivities(0, 1, 4, strCity, strCategory, strSearch); _this.getActivities(0, 1, 4, strCity, strCategory, strSearch);
} }
event.on('DataChanged', this, function(data) {
var activity_id = data['activity_id']
var num_like = data['num_like']
var activities = _this.__data__.activities;
for(var i=0; i< activities.length; i++)
{
if(activity_id == activities[i]['activity_id'])
{
activities[i]['num_like'] = num_like
}
}
_this.setData({
activities: activities,
})
})
}, },
/** /**
...@@ -196,6 +216,8 @@ Page({ ...@@ -196,6 +216,8 @@ Page({
*/ */
onUnload: function () { onUnload: function () {
event.remove('DataChanged', this);
}, },
/** /**
......
// pages/activity/activity.js // pages/activity/activity.js
// pages/activity/activity.js // pages/activity/activity.js
const app = getApp() const app = getApp()
var config = wx.getStorageSync("config"); var config = wx.getStorageSync("config");
var event = require('./../../../utils/event.js')
Page({ Page({
...@@ -97,13 +98,23 @@ Page({ ...@@ -97,13 +98,23 @@ Page({
if(likeDictSub.hasOwnProperty('index_id')) if(likeDictSub.hasOwnProperty('index_id'))
{ {
var index = likeDictSub['index_id'] var index = likeDictSub['index_id']
var activity_id = collects[index]['activity_id']
var num_like = likeDictSub['num_like']
collects[index]['num_like'] = likeDictSub['num_like'] collects[index]['num_like'] = likeDictSub['num_like']
//在这个页面只能直接取消; 故直接从collects里去除该记录 //在这个页面只能直接取消; 故直接从collects里去除该记录
collects.splice(index, 1) collects.splice(index, 1)
var data = {
'activity_id': activity_id,
'num_like' : num_like
}
event.emit('DataChanged', data);
_this.setData({ _this.setData({
collects: collects, collects: collects,
likeDictSub: {}, // 处理完之后, 重置为{} likeDictSub: {}, // 处理完之后, 重置为{}
}) })
} }
}, },
......
var events = {};
var events = {};
function on(name, self, callback) {
var tuple = [self, callback];
var callbacks = events[name];
if (Array.isArray(callbacks)) {
callbacks.push(tuple);
}
else {
events[name] = [tuple];
}
}
function remove(name, self) {
var callbacks = events[name];
if (Array.isArray(callbacks)) {
events[name] = callbacks.filter((tuple) => {
return tuple[0] != self;
})
}
}
function emit(name, data) {
var callbacks = events[name];
if (Array.isArray(callbacks)) {
callbacks.map((tuple) => {
var self = tuple[0];
var callback = tuple[1];
callback.call(self, data);
})
}
}
module.exports = {
on,
remove,
emit,
}
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论