dataModel.js
4.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
define('dataModel', ['components/common', 'Mobilemode_trace'], function (common, trace) {
var store = common.store;
var Queues = {
push: function(dataName, request) {
var req = Queues[dataName];
if(req) return req;
return Queues[dataName] = request().then(function(data) {
Queues.pop(dataName);
return data;
});
},
pop: function(dataName) {
delete Queues[dataName];
}
}
var dataModel = {
appid: store.get("appid"),
appHomepageId: (function() {
var pageHistory = trace.get('pageHistory'),
appHomepageId = store.get('appHomepageId'),
appid = store.get('appid');
store.remove('appHomepageId');
store.remove("appid");
if(!pageHistory) return appHomepageId;
return pageHistory[appid] || appHomepageId;
}()),
appHomepageName: "",
navsModel: {
data: null,
/**
* @return status: 0|1, data: {
* apphomepage_items 自定义页面
* list_items 公共查询列表
* nav_items 所有页面
* new_layoutpages 新建布局
* }
*/
get: function () {
var that = this;
return common.api('designer', {
action: "getNavPanelData",
type: "get",
data: { appid: dataModel.appid }
}).then(function(res) {
var data = res.data;
that.data = data;
return data;
});
}
},
appHomepageInfo: {
data: null,
/**
* @param appid - 应用id
* @param appHomepageId - 页面id
* @return status: 0|1, data: {
* appid 应用id
* content 页面内容
* id 页面id
* mecJsonArr 页面插件信息
* pageAtrr 页面属性
* }
*/
get: function () {
var that = this;
return common.api('designer', {
action: "getAppHomepageInfo",
type: "get",
data: {
"appid": dataModel.appid,
"appHomepageId": dataModel.appHomepageId
}
}).then(function (result) {
var data = result.data || {};
that.data = data;
dataModel.appid = data.appid;
dataModel.appHomepageId = data.id;
return result.data;
});
},
},
fieldOptions: {
data: {
set: function(fields){
this[fields.formid] = fields.options;
},
get: function(formid){
return this[formid];
}
},
}
};
return {
/**
* @param dataName - 数据名称 (必填)
* @param args - 请求参数
* @param sync - 同步获取, 需要确保请求完成的情况下
*/
get: function (dataName, args, sync) {
var model = dataModel[dataName], data;
// 非对象类型的数据 如: appid appHomepageid 等
if (!common.isObject(model)) return model;
// 当请求没有参数 且需要同步获取时, 交换参数
if (common.isBoolean(args)) sync = args;
data = model.data;
// 同步获取数据 需确保对象已经加载完毕
if (data && sync) return data;
// 在不确定对象是否获取成功,但实际已经获取的情况 返回一个Promise对象
if (data) return $.Deferred().resolve(data);
// 当发起多个请求时, 以某一次为主, 忽略参数是否相同
return Queues.push(dataName, function() {
return model.get.apply(model, args);
});
},
/**
* @param dataName - 数据名称 (必填)
* @param Array args - 当model为object时,为请求参数, 否则为value (必填)
* @param Function hanlder 请求成功后的回调函数 (可选)
*/
update: function (dataName, args) {
var model = dataModel[dataName];
if (!common.isObject(model)) {
return (dataModel[dataName] = args);
}
model.data = null;
return Queues.push(dataName, function() {
return model.get.apply(model, args);
});
}
}
});