import MainModel from "./mainModel.js";
export default class AJAX {
constructor() {
this.oneBool = false;
this.bindHandler = this.loadHandler.bind(this);
this.xhr = new XMLHttpRequest();
this.xhr.addEventListener("load", this.bindHandler)
}
static get URL() {
return "http://localhost:4008";
}
//发送信息给后台
post(obj) {
this.xhr.open("POST", AJAX.URL);
this.xhr.send(encodeURIComponent(JSON.stringify(obj)));
}
//发送信息给后台
get(obj) {
this.xhr.open("GET", AJAX.URL + "?" + encodeURIComponent(JSON.stringify(obj)));
this.xhr.send();
}
//发送信息给后台
once(obj) {
this.oneBool = true;
this.post(obj);
}
//接受后台信息
loadHandler(e) {
//decodeURIComponent 二进制字符串
var obj = JSON.parse(decodeURIComponent(this.xhr.response));
switch (obj.type) {
case 0x01:
MainModel.getInstance().goodsList = obj.result;
break;
case 0x02:
MainModel.getInstance().shoppingList = obj.result;
break;
case 0x03:
MainModel.getInstance().shoppingList = obj.result;
break;
case 0x04:
var evt = new Event(MainModel.GOODS_CHANGE_UPDATE);
evt.data = obj.result;
MainModel.getInstance().dispatchEvent(evt);
break;
case 0x05:
MainModel.getInstance().shoppingList=obj.result;
break;
case 0x06:
console.log(obj.result);
break;
case 0x07:
//ajax从后台接受导数据 1.数据传入数据池(将数据传入数据池,其它页面调用)
MainModel.getInstance().shop=obj.result;
break;
}
if (this.oneBool) {
this.dispose();
}
}
dispose() {
this.xhr.removeEventListener("load", this.bindHandler);
this.bindHandler = null;
this.xhr.abort();
this.xhr = null;
}
}
export default class MainModel extends EventTarget
{
constructor(){
super();
this.table=null;
}
//单例模式
static getInstance(){
if(!MainModel._instance){
Object.defineProperty(MainModel,"_instance",{
value:new MainModel()
});
}
return MainModel._instance;
}
//接收obj.result 将数据+入事件MainModel.SHOP 抛发
set shop(value){
// console.log(value)
this._shop=value;
var evt=new Event(MainModel.SHOP);
evt.data=value;
this.dispatchEvent(evt);
}
//定义获取数据
get shop(){
return this._shop;
}
//抛发SHOPPING_LIST_UPDATE事件
set goodsList(value){
this._goodsList=value;
var evt=new Event(MainModel.GOODS_LIST_DATA);
evt.data=value;
this.dispatchEvent(evt);
}
get goodsList(){
return this._goodsList;
}
//抛发SHOPPING_LIST_UPDATE事件
set shoppingList(value){
this._shoppingList=value;
var evt=new Event(MainModel.SHOPPING_LIST_UPDATE);
evt.data=value;
this.dispatchEvent(evt);
}
get shoppingList(){
return this._shoppingList;
}
static get GOODS_LIST_DATA(){
return "goods_list_data";
}
static get SHOPPING_LIST_UPDATE(){
return "shopping_list_update";
}
static get GOODS_CHANGE_UPDATE(){
return "goods_change_update";
}
//详情页面数据抛发事件名SHOP
static get SHOP(){
return "shop";
}
}