我们接续上一篇完成一些未完成的功能。
这两个按钮在整个篇章中,属於比较困难的部分。
我们先来分析一下,应该要完成哪些步骤才能走完流程。
true
(完成)false
(未完成)我们每次做状态更新的时候都需要修改画面,
并且更新资料。若老板不断修改状态的话,就会不断的与後台往来资料。
导致速度缓慢,也会造成系统的负担。
所以这边比较好的做法是,我们先将资料存在localStorage,
然後在达成特定条件的时候再与後台做资料的交换。
//先将资料转成字串再存入
localStorage.setItem("undo_data", JSON.stringify(data))
localStorage.setItem("done_data", JSON.stringify(data))
setUndoOrder():
function setUndoOrder() {
var json = 0
$.ajax({
url: "@Url.Action("GetUndoOrder")",
type: "post",
dataType: "json",
success: function (data) {
localStorage.setItem("undo_data", JSON.stringify(data))
data.forEach((item) => {
undo_order(item.head, item.bodys)
})
},
error: function (xhr, ajaxOptions, thrownError) {
alert("status: " + xhr.status);
alert(xhr.responseText);
alert(thrownError);
},
complete: function () {
}
})
return json
}
setDoneOrder():
function setDoneOrder() {
var json = 0
$.ajax({
url: "@Url.Action("GetDoneOrder")",
type: "post",
dataType: "json",
success: function (data) {
localStorage.setItem("done_data",JSON.stringify(data))
data.forEach((item) => {
})
},
error: function (xhr, ajaxOptions, thrownError) {
alert("status: " + xhr.status);
alert(xhr.responseText);
alert(thrownError);
},
complete: function () {
}
})
return json
}
<button id="${uid}_btn" name="done_btn" type="button" class="btn btn-success">
完成
</button>
undo_order():
function undo_order(head, bodys) {
var formNum = head.formnum
var count = bodys.length
var uid = head.uid
var html_text = `
<li id="${uid}_li" class="list-group-item justify-content-between align-items-center list-group-item-success">
<table id="${uid}_table" class="table table-borderless list-group-item-success">
<thead>
<tr>
<th>
订单编号 ${formNum}
<span class="badge bg-primary rounded-pill">${count}</span>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="list-group item_list">
</div>
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>
<button id="${uid}_btn" name="done_btn" type="button" class="btn btn-success">
完成
</button>
</td>
</tr>
</tfoot>
</table>
</li>
`
$('#undo_list').append(html_text)
bodys.forEach((item) => {
var item_html = undo_order_item(item.item, item.count)
var selector = `#${uid}_table>tbody>tr>td>div`
$(selector).append(item_html)
}
)
}
button
新增事件$('#undo_list').on("click", 'button[name="done_btn"]', function () {
var uid = $(this).attr("id").replace("_btn", "")
console.log(uid)
var undo_data = JSON.parse(localStorage.getItem("undo_data"))
var done_data = JSON.parse(localStorage.getItem("done_data"))
undo_data.forEach((item,index) => {
if (item.head.uid == uid) {
//新增元素到done_list
done_order(item.head, item.bodys)
//新增资料到done_data
done_data[done_data.length] = item
//删除undo_list的元素
$(`#${uid}_li`).remove()
//删除undo_data的资料
undo_data.splice(index, 1)
//将资料存回localStotage
localStorage.setItem("done_data",JSON.stringify(done_data))
localStorage.setItem("undo_data",JSON.stringify(undo_data))
}
})
});
将刚刚的做法如法炮制
<button type="button" class="btn btn-outline-warning" id="btn${uid}" name="itemback_btn">
返回
</button>
done_order()
function done_order(head,bodys) {
var formNum = head.formnum
var uid = head.uid
var html_text = `
<div ${uid}_div>
<button class="list-group-item list-group-item-action active btn-outline-success" type="button" data-toggle="collapse" data-target="#collapse${uid}" aria-expanded="false" aria-controls="collapse${uid}">
订单编号 ${formNum}
</button>
<div class="collapse" id="collapse${uid}">
<div class="card card-body">
<div class="list-group" name="item_list">
</div>
<div>
<br />
<button type="button" class="btn btn-outline-warning" id="btn${uid}" name="itemback_btn">
返回
</button>
</div>
</div>
</div>
</div>
`
$('#done_list').append(html_text)
bodys.forEach((item) => {
var item_html = done_order_item(item.item, item.count)
var selector = `#collapse${uid}>div>div[name='item_list']`
$(selector).append(item_html)
}
)
}
$('#done_list').on("click", 'button[name="itemback_btn"]', function () {
var uid = $(this).attr("id").replace("btn", "")
var undo_data = JSON.parse(localStorage.getItem("undo_data"))
var done_data = JSON.parse(localStorage.getItem("done_data"))
done_data.forEach((item, index) => {
if (item.head.uid == uid) {
undo_order(item.head, item.bodys)
undo_data[undo_data.length] = item
$(`#${uid}_div`).remove()
done_data.splice(index, 1)
localStorage.setItem("done_data", JSON.stringify(done_data))
localStorage.setItem("undo_data", JSON.stringify(undo_data))
}
})
});
localStorage的时效是永久的,
所以在使用localStorage需要注意避免一昧的新增。
现今因为容器的盛行,许多的企业都导入了容器解决方案,使得布署与开发都能加快速度。今天的内容是描述怎麽...
React Component 只能透过资料状态的改变来更新 UI,而 React 元件有两种资料来...
从基本的 HTML、CSS 网页设计开始入门,先学习静态版面设计技巧,再带入动态的 JavaScri...
Figma可以透过Figma Mirror从手机预览自己的设计且不用透过同一个wifi,马上来实际做...
今日目标 合并iron_window与iron_render 制作DrawLine用来画辅助线 为什...