跳至主要內容

地址保存

起凡大约 6 分钟起凡商城地址地址保存小程序

地址保存

地址保存页面
地址保存页面

腾讯地图插件配置

export default defineAppConfig({
  pages: [
    "pages/index/index",
    "pages/user/index",
    "pages/address/address-list",
    "pages/address/address-save",
  ],
  // 忽略...
  plugins: {
    chooseLocation: {
      version: "1.0.10",
      provider: "wx76a9a06e5b4e693e",
    },
  },
  permission: {
    "scope.userLocation": {
      desc: "你的位置将用于确认收货地址",
    },
  },
  requiredPrivateInfos: ["getLocation"],
});






 


 
 
 
 
 
 
 
 
 
 
 
 


源码解析

地图标点

  • :markers="[marker]":传入一个包含单个标记(marker)的数组,代表地图上的某个特定地点标记。
<template>
  <div class="address-save">
    <map
      id="map"
      class="map"
      :latitude="address.latitude - 0.004"
      :longitude="address.longitude"
      :markers="[marker]"
    >
    </map>
  </div>
</template>

地址表单

  • "address-save",它包裹了整个地址输入区域。

  • 在".address-section"容器内,包含一个表单(.form)结构,用于展示并收集用户填写的地址详细信息。

  • 表单中,每个字段以.form-item作为布局单元,包括:

    • 门牌号:通过一个带有v-model="address.details"的输入框收集用户输入的具体门牌号或详细地址。
    • 联系人:同样使用带绑定的输入框收集用户姓名信息,v-model="address.realName"
    • 手机号:收集用户的手机号码,使用v-model="address.phoneNumber"进行双向数据绑定。

所以,当用户在这些输入框中输入信息时,对应的address对象中的各个属性(如detailsrealNamephoneNumber)会自动更新,以便后续进行地址信息的验证与保存操作。

<template>
  <div class="address-save">
    <!-- 忽略... -->
    <div class="address-section">
      <div class="form">
        <div class="form-item">
          <div class="label">门牌号</div>
          <div class="input">
            <input placeholder="请输入详细地址" v-model="address.details" />
          </div>
        </div>
        <div class="form-item">
          <div class="label">联系人</div>
          <div class="input">
            <input placeholder="请输入姓名" v-model="address.realName" />
          </div>
        </div>
        <div class="form-item">
          <div class="label">手机号</div>
          <div class="input">
            <input placeholder="请输入手机号" v-model="address.phoneNumber" />
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

地图选点

<template>
  <div class="address-save">
    <!-- 忽略... -->
    <div class="address-section">
      <div class="btn" @click="chooseAddress">
        去选择收货地址
        <rect-right color="#999"></rect-right>
      </div>
      <!-- 忽略... -->
    </div>
  </div>
</template>

提交表单/回显表单

<template>
  <div class="address-save">
    <!-- 忽略... -->
    <div class="address-section">
        <!-- 忽略... -->
      <div class="submit" @click="submit">保存地址</div>
    </div>
  </div>
</template>