微信小程序入门 ——增删改查+页面跳转+传值取值+布局样式

**目标场景
**分类管理

技术点
读取分类列表

点击某分类进入编辑页,操作编辑与删除

点击列表页底部按钮,跳转添加,共用编辑页

效果

列表页js

var Bmob = require('../../utils/bmob.js');var that;

Page({

 onLoad: function () {

 that = this;

 },

 onShow: function () {

 that.loadCategories();

 },

 loadCategories: function () { 

 var query = new Bmob.Query('Category');

 query.limit(Number.Max_VALUE);

 query.find().then(function (categories) {

 console.log(categories);

 that.setData({

 categories: categories

 });

 });

 },

 add: function () { 

 // 跳转添加页面

 wx.navigateTo({

 url: '../add/add'

 });

 },

})

可以看到,上面使用了onShow代替了onLoad作为加载请求loadCategories,这是因为考虑到添加完毕后会有返回上页,能和自刷新最新数据。
相应的布局页面

 class="item" wx:for="{{categories}}" wx:key="">

  class="title" url="../add/add?objectId={{item.objectId}}" open-type="navigate" hover-class="none">{{item.title}}

 class="add-category" bindtap="add">

  src="/images/add.png" class="icon" />

  class="caption">新增分类

列表页跳转可以使用代替的bindtap,这样更简洁一些;而底部的添加按钮使用position: fixed固定底部;wx:for循环提供objectId作为参数,以传递给编辑页面。
编辑页面

var Bmob = require('../../utils/bmob.js');var that;

Page({

 onLoad: function (options) {

 that = this; 

 if (options.objectId) {

 // 缓存数据

 that.setData({

 isEdit: true,

 objectId: options.objectId

 }); 

 // 请求待编辑的分类对象

 var query = new Bmob.Query('Category');

 query.get(that.data.objectId).then(function (category) {

 that.setData({

 category: category

 });

 });

 }

 },

 add: function (e) {

 var form = e.detail.value;

 if (form.title == '') {

 wx.showModal({

 title: '请填写分类名称',

 showCancel: false

 }); 

 return;

 } 

 // 添加或者修改分类

 var category = new Bmob.Object('Category');

 // 修改模式

 if (that.data.isEdit) {

 category = that.data.category;

 }

 category.set('title', form.title);

 category.save().then(function (updatedCategory) {

 // that.setData({

 // category: updatedCategory

 // });

 // 操作成功提示并返回上一页

 wx.showModal({

 title: that.data.isEdit ? '修改成功' : '添加成功',

 showCancel: false,

 success: function () {

 wx.navigateBack();

 }

 });

 });

 }, 

 delete: function () {

 // 确认删除对话框

 wx.showModal({

 title: '确认删除',

 success: function (res) {

 if (res.confirm) { 

 var category = that.data.category;

 category.destroy().then(function (result) {

 wx.showModal({

 title: '删除成功',

 showCancel: false,

 success: function () {

 wx.navigateBack();

 }

 });

 });

 }

 }

 });

 }

})

通过onLoad事件的options回调接受objectId参数,如果存在代表是编辑状态,反之添加
添加页面,通过form取值,bindtap事件中,通用e.detail.value拿到form对象
wx.showModal,带参showCancel决定取消按钮是不是显示,点击确认或取消按钮支持回调,而showToast虽然能回调,但在wx.navigateBack()同时并发,导致会看不清Toast上的文本就返回到上一页了,所以基本都改用showModal了。res.confirm代表用户点击了确认按钮而非取消按钮。
编辑页面布局

 onsubmit="add">

  class="item">

  class="title">分类名称

  class="subtitle">

  type="text" name="title" value="{{category.title}}" placeholder="请填写分类名称" />

 

 

  class="buttons">

  wx:if="{{isEdit}}" class="delete" bindtap="delete">删除

  form-type="submit" class="confirm">{{isEdit ? '修改' : '添加'}}

判断是不是编辑状态isEdit,分别显示修改或添加样式,相应的事件也有不同,分别对应onsubmit方法与delete方法。 编辑页样式

/*每行*/

.item { 

 align-items: center;

 border-bottom: 1px solid #eee;

 background: white;

 margin-left: 0;

}

/*确认按钮*/

.confirm {

 background: #4cd964;

 color: white; 

 margin: 10px; 

 flex: 1;

}

/*删除按钮*/

.delete {

 background: #da634f; 

 color: white; 

 margin: 10px; 

 flex: 1;

}

/*标题与文本框1/3开*/

.title {

 flex: 1;

}

.subtitle {

 flex: 3;

}

/*编辑与添加按钮*/

.buttons {

 display: flex; 

 flex-direction: row;

}

文本标签与input标记,使用flex,1: 3比例对开,编辑与删除则1: 1对半开

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容