home.js 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. define(['$', 'template', 'IScroll', 'product', 'user', 'native', 'config', 'address'], function ($, template, IScroll, product, user, native, config, address) {
  2. /*
  3. * 先定义一些模块内用到的function
  4. */
  5. function back(event) {
  6. event.preventDefault();
  7. native.back();
  8. }
  9. /*
  10. * 模块结构:5部分。
  11. * title:题目。
  12. * content:不知道是什么,似乎从没用过。
  13. * 以下可以当作生命周期回调,虽然并不清楚是什么时候回调的……
  14. * init:根据上一个页面传来的pageData初始化本页数据,生成页面,绑定事件。
  15. * beforeopen:接收上一个页面传来的数据、有需要的话重置数据
  16. * afteropen:做一些网络请求。
  17. * beforeclose:
  18. */
  19. return {
  20. title: '壹管家上门服务',
  21. body: '',
  22. init: function (pageData, dtd) {
  23. /* this是什么? */
  24. var $view = this;
  25. var $doc = $(document);
  26. /* 定义按钮事件。
  27. * 为什么不是$(selector).onclick(function)呢?
  28. */
  29. //返回
  30. $.newTouch('.back-button', function (event) {
  31. back.call(this, event);
  32. }, $view);
  33. $view.on('tapBackButton', function (event) {
  34. back.call(this, event);
  35. });
  36. //客服电话
  37. $.newTouch('.service-telephone', function (event) {
  38. event.preventDefault();
  39. native.call('4000328170');
  40. }, $view);
  41. //点击banner-1进入充值卡页
  42. $.newTouch('.btn-banner-recharge', function (event) {
  43. event.preventDefault();
  44. $doc.trigger('spa:navigate', {
  45. hash: 'recharge',
  46. pushData: {
  47. needReload: true
  48. }
  49. });
  50. }, $view);
  51. //点击banner-2进入充值卡页面
  52. $.newTouch('.btn-banner-coupon', function (event) {
  53. event.preventDefault();
  54. $doc.trigger('spa:navigate', {
  55. hash: 'myCoupon',
  56. pushData: {
  57. needReload: true
  58. }
  59. });
  60. }, $view);
  61. /* 点击产品列表的某一项 */
  62. $.newTouch('.btn-product', function (event) {
  63. event.preventDefault();
  64. var type = parseInt($(this).attr('data-product-type'));
  65. /*
  66. * 这个写法是SPA路由框架规定的。
  67. * $(selector).trigger(event, params)是jQuery的:触发被选元素上的指定事件
  68. */
  69. $doc.trigger('spa:navigate', {
  70. hash: 'placeOrder',
  71. pushData: {
  72. product: product.allList[type - 1],
  73. needReset: true
  74. }
  75. });
  76. }, $view);
  77. /* 点击标签
  78. $.newTouch('.btn-product-group', function (event) {
  79. event.preventDefault();
  80. if ($(this).hasClass('global-msg-active')) return;
  81. $(this).addClass('global-msg-active').siblings().removeClass('global-msg-active');
  82. var index = $(this).attr('data-group-index');
  83. switch (index){
  84. case '0':
  85. $('#list0').show().siblings().hide();
  86. break;
  87. case '1':
  88. $('#list1').show().siblings().hide();
  89. break;
  90. case '2':
  91. $('#list2').show().siblings().hide();
  92. break;
  93. case '3':
  94. $('#list3').show().siblings().hide();
  95. break;
  96. }
  97. }, $view); */
  98. // 点击……不知如何说明……
  99. $.newTouch('.btn-action-my-order', function (event) {
  100. event.preventDefault();
  101. $doc.trigger('spa:navigate', {
  102. hash: ''
  103. });
  104. }, $view);
  105. // 个人中心
  106. $.newTouch('.btn-action-coupon', function (event) {
  107. event.preventDefault();
  108. user.checkLogin(function () {
  109. $doc.trigger('spa:navigate', {
  110. hash: 'mine',
  111. pushData: {
  112. needReset: true
  113. }
  114. });
  115. });
  116. }, $view);
  117. /* 招聘
  118. $.newTouch('.btn-action-hire', function () {
  119. event.preventDefault();
  120. $doc.trigger('spa:navigate', {
  121. hash: 'hire'
  122. });
  123. }, $view); */
  124. /* 不知道什么意思。*/
  125. dtd.resolve();
  126. /* 跳转到填写订单页面
  127. function goProductPage(type) {
  128. 如果没登陆会跳转到登录。这个function参数是登陆成功的回调
  129. user.checkLogin(function () {
  130. 预期字段不足 先清除本地数据
  131. if (!user['productVisit'][13]) {
  132. localStorage.removeItem('user_productVisit');
  133. localStorage.removeItem('user_productVisit-time');
  134. user['productVisit'][13] = {
  135. visited: false
  136. }
  137. }
  138. 判断是否是第一次看这个类型。如果不是的话跳转到placeOrder页面
  139. if (user['productVisit'][type]['visited']) {
  140. } else {
  141. 如果是的话跳转到product页面
  142. $doc.trigger('spa:navigate', {
  143. hash: 'product',
  144. pushData: {
  145. type: type,
  146. needReload: true,
  147. fromHome: true
  148. }
  149. });
  150. 并把这个类别的visit属性设置为true
  151. user.productVisit[type].visited = true;
  152. user.setCache('productVisit');
  153. }
  154. // });
  155. } */
  156. /* 跳转到coming页面。
  157. function goComing(type) {
  158. user.checkLogin(function () {
  159. $doc.trigger('spa:navigate', {
  160. hash: 'coming',
  161. pushData: {
  162. productType: type
  163. }
  164. });
  165. });
  166. }*/
  167. /* 不知道这是干什么。离线显示一张图片?
  168. if (!user.activities['visited_offservice0126']) {
  169. // showActivity();
  170. }
  171. function showActivity() {
  172. var imgUrl = 'http://wozhua-others.qiniudn.com/20160126-offservice.png';
  173. var d = new Image();
  174. d.src = imgUrl;
  175. d.onload = function () {
  176. $doc.trigger('spa:openpanel', ['activity', {
  177. content: imgUrl
  178. }]);
  179. }
  180. } */
  181. },
  182. beforeopen: function (pageData, dtd) {
  183. localStorage.removeItem('cart_products');
  184. dtd.resolve();
  185. native.switchPopGesture(true);
  186. },
  187. afteropen: function (pageData, dtd) {
  188. var $view = this;
  189. var $doc = $(document);
  190. /* 如果需要重新加载,就请求服务列表。 */
  191. if (!pageData.pushData.dontNeedReload) {
  192. $doc.trigger('spa:openloader');
  193. /*
  194. * tmodjs:
  195. * 使用模版语法把数据填到html文件,生成一个js文件。
  196. * var tpl = template(html文件路径,数据)
  197. */
  198. var tpl = template('home/index', {
  199. showNavBar: !config.isWX && !config.isChubao
  200. });
  201. /*
  202. * jQuery:
  203. * 提供一个html元素到js变量的映射,和findViewById一个作用。
  204. * $(selector).???(xxx)
  205. * 其中selector是选择器,对应html的元素、类、id等
  206. * ???是jQuery定义的事件
  207. * xxx是参数,具体是什么取决于事件
  208. *
  209. * 这句的意思是,选取class=".spa-page-body"的元素,把tpl插入其中
  210. */
  211. $('.spa-page-body', $view).html(tpl);
  212. /* 建立IScroll */
  213. setTimeout(function () {
  214. pageData.scroll = new IScroll('#homeScroll');
  215. var swiper = new Swiper('.swiper-container', {
  216. autoplay: 2500,
  217. pagination: '.swiper-pagination',
  218. paginationClickable: true,
  219. simulateTouch : false
  220. });
  221. }, 500);
  222. // 目前的作用只是供后端判断,该用户是否为新用户,所以没有回调。
  223. product.getListAll(user.id);
  224. address.getList({
  225. request_from: 'weixin',
  226. user_id: user.id
  227. });
  228. $doc.trigger('spa:closeloader');
  229. }
  230. /* 又是这个。不知道什么玩意…… */
  231. dtd.resolve();
  232. //强制设置首页的上一页是空的,后面再调整框架
  233. pageData.prevPage = $('.spa-page-empty');
  234. },
  235. beforeclose: function (pageData, dtd) {
  236. dtd.resolve();
  237. native.switchPopGesture(false);
  238. }
  239. }
  240. })