define(['template', 'native', 'config', 'address', 'api', 'user'], function (template, native, config, address, api, user) { function back(event) { event.preventDefault(); $(document).trigger('spa:navigate', { hash: 'addressList' }); } var cachePageData = {}; //page内部的数据传递 return { title: '地址详情', body: '', init: function (pageData, dtd) { var $view = this; var $doc = $(document); var pushData = pageData.pushData; //返回 $.newTouch('.back-button', function (event) { back.call(this, event); }, $view); $view.on('tapBackButton', function (event) { back.call(this, event); }); $view.on('swipeRight', function (event) { back.call(this, event); }); $.newTouch('.btn-delete', function() { var addressID = $(this).data('id'); address.deleteAddress(user.id, addressID, function(res){ if (res.success) { address.getList({ request_from: 'weixin', user_id: user.id }, function(res) { if (res.success) { $doc.trigger('spa:navigate', { hash: 'addressList', pushData: { needReload: true } }); }; }) } else { $doc.trigger('spa:openpanel', ['simpleAlert', { message: res.message }]); } }); }, $view); // 定位 $.newTouch('.select-poi', function (event) { var searchText = $(this).data('poi-name'); var searchProvince = $(this).data('province'); $doc.trigger('spa:navigate', { hash: 'addressPoisiton', pushData: { needReload: true, searchText: searchText, searchProvince: searchProvince, backHash: 'addressDetail' }, callback: { onSelect: function (name, place, address_position, address_detail) { $('.select-poi', $view).text(name); $('.select-poi', $view).data('poi-name', address_detail.poi.name); $('.select-poi', $view).data('province', address_detail.province); cachePageData.address_position = address_position; cachePageData.address_detail = address_detail; } } }); }, $view); //确认地址 $.newTouch('.btn-save', function (event) { event.preventDefault(); // 设置默认地址 var addressInfo = address['list'][cachePageData.addressIndex]; var name = $('.address-name', $view).val(), mobile = $('.address-mobile', $view).val(), detail = $('.address-detail', $view).val(); if (name == '') { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请输入您的名字' }]); return; } if (mobile.length !== 11) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请输入正确的手机号' }]); return; } if (detail == '') { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请输入您的详细地址' }]); return; } if (cachePageData.address_detail) { cachePageData.address_detail.detail = detail; addressStr = JSON.stringify(cachePageData.address_detail); address_position = JSON.stringify(cachePageData.address_position); } else { var addressDetailTmp = addressInfo.address; addressDetailTmp.detail = detail; var addressStr = JSON.stringify(addressDetailTmp); var address_position = addressInfo.position; address_position = JSON.stringify(address_position); } var param = { request_from: 'weixin', name: name, mobile: mobile, user_id: user.id, address_position: address_position, address: addressStr, address_id: cachePageData.addressID }; address.editAddress( param, function(res) { $doc.trigger('spa:closeloader'); if (res.success) { $doc.trigger('spa:navigate', { hash: 'addressList', pushData: { needReload: true } }); } else { $doc.trigger('spa:openpanel', ['simpleAlert', { message: res.message }]); } }) /*if (cachePageData.callback && $.isFunction(cachePageData.callback.onSelect)) { cachePageData.callback.onSelect(cachePageData.addressID); }*/ }, $view); dtd.resolve(); }, beforeopen: function(pageData, dtd) { var $view = this; var $doc = $(document); var pushData = pageData.pushData; cachePageData.needReload = pushData.needReload; if (cachePageData.needReload) { pushData.needReload = false; cachePageData.addressID = pushData.addressID; cachePageData.addressIndex = pushData.addressIndex; var addressIndex = pushData.addressIndex; var addressData = address.list[addressIndex]; cachePageData.callback = pageData.callback; var tpl = template('address/detail/index', { showNavBar: !config.isWX && !config.isChubao, title: '修改地址', address: addressData, add: false }); $('.spa-page-body', $view).html(tpl); if (cachePageData.scroll) { cachePageData.scroll.destroy(); cachePageData.scroll = null; } setTimeout(function() { cachePageData.scroll = new IScroll('#addressListScroll'); }, 10); } dtd.resolve(); } }; })