首先我認為這個問題貌似不是一個技術性問題。從業(yè)務上來說,許多人同時操作排序是否合理?是否應該將排序這個功能下放到專門的人員那邊?
如果非要從技術上解決這個問題,比如:張三把 1,2交換了,李四把1、3交換了,那么最終的順序是哪個?這個是否應該訂一套業(yè)務規(guī)則?
那么再考慮:1、張三在操作的時候,鎖死其他人的操作,其他人不能操作 2、張三操作完畢,其他人實時看到張三的操作結果。那么這個系統(tǒng)涉及前后端實時信息交互,是否是過度設計了?
建議題主酌情考慮是不是再溝通溝通...
jsf 或者 js描述一個頁面結構,這個結構會被用來構造真正的 DOM 樹,然后掛載到 container<div id="app"/>) 上。DOM 和 真實 DOM的橋梁,所謂的雙向綁定就是靠這個中間人。頁面載入時的初始狀態(tài)樹就是由所有構造函數(shù) (React.Component 之類的東西,里邊的 this.state = {...},就是在描述初始狀態(tài)樹)匯總而來。UI 事件、網絡事件導致新的狀態(tài)產生,就會導致狀態(tài)樹進行迭代。方式就是根據(jù)新的狀態(tài)構造一棵新的狀態(tài)樹,并與舊的進行比對,掃描出涉及到的虛擬 DOM(因為你通過構造函數(shù)里、props等等方式告訴系統(tǒng)哪些狀態(tài)與哪些節(jié)點相關),這一步有的叫 臟標記,就是 節(jié)點臟了,要更新了 的意思。DOM 對應的節(jié)點(一開始通過 jsf 或繼承 Component 等方式登記了這個信息)進行更新,有的是改變樣式、有的是增刪、有的是重用節(jié)點修改內容、有的是修改節(jié)點值(value 等等)。然后 2 3 步循環(huán)。
太久沒看 react 和 vue 了,不知道現(xiàn)在有沒有更新思路,記憶里是這樣的。
// 1、定義這兩個函數(shù)
function touchEventToMouseEvent(event, eventType) {
if (!event.originalEvent || !event.originalEvent.targetTouches || event.originalEvent.targetTouches.length != 1)
return false;
var te = event.originalEvent.targetTouches[0];
var clientX = te.clientX, clientY = te.clientY, screenX = te.screenX, screenY = te.screenY;
var simEvent = new MouseEvent(eventType, {
clientX: clientX,
clientY: clientY,
screenX: screenX,
screenY: screenY,
button: 0,
buttons: 0
});
return simEvent;
}
function findElm(targetElement) {
targetElement.on('touchstart', function (e) {
console.log('touchstart');
console.log(e);
var simEvent = touchEventToMouseEvent(e, 'mousedown');
if (simEvent != null) {
$(this)[0].dispatchEvent(simEvent);
}
});
targetElement.on('touchmove', function (e) {
e.preventDefault();
console.log('touchmove');
var simEvent = touchEventToMouseEvent(e, 'mousemove');
if (simEvent != null) {
$(this)[0].dispatchEvent(simEvent);
}
});
targetElement.on('touchend', function (e) {
console.log('touchend');
console.log(e);
var simEvent = touchEventToMouseEvent(e, 'mouseup');
if (simEvent != null) {
$(this)[0].dispatchEvent(simEvent);
}
});
}
// 2、執(zhí)行 findElm(selectorElement) 即可將移動端的touch
findElm(selectorElement);
class類名為dadad的父級元素的前一個相鄰的同胞元素隱藏掉
很正常
referer只是向服務器指明是從哪個頁面跳轉過來的。
如果有iframe的話,iframe里面多次跳轉以后的referer是有chrome另外計算的
如果當前頁面是第一次加載,也可能來自上一個網站或者script
根據(jù)問題的補充,我打開這個頁面看了一下
這里確實是有一個iframe,這個請求是iframe中的網頁發(fā)出的,所以referer自然是這個iframe的地址
參數(shù)用對象呀 多舒服
function move(obj){}
調用:
obj = {
first:'',
modify:''
}
move(obj);因為for循環(huán)先獲取滾動條高度后加載數(shù)據(jù),導致滾動條默認在最底下。
watch: {
chatlog() {
console.log("chatlog change");
this.$nextTick(() => {
var container = this.$el.querySelector("#chatContainer");
console.log(container);
container.scrollTop = container.scrollHeight;
})
// document.getElementById('chatContainer').scrollTop = document.getElementById('chatContainer').scrollHeight+150;
}
}
直接設置個變量 移入修改變量 通過變量的值 v-if區(qū)別渲染圖片
根據(jù)瀏覽器寬度改變字體大小,以750的標準對應30的字體大小(rem布局)
1.在瀏覽器小于750的時候生效(可能取決于設計圖只有750寬)
2.根據(jù)實際寬與標準寬比例,獲取當前寬度下的字體大小
3.如果當前寬度下的字體大小小于12則取12號字體(這里可能是考慮到部分瀏覽器有最小字號的限制)
1.set-cookie這個響應頭是后端返回的,這個一般是后端寫的cookie
2.前端js寫cookie一般是直接操作document.cookie
之前好像遇到過,問題在于可能會先打印isAction,然后異步取到值后再區(qū)填充goods的值,你斷點走到431行 看看goods有值沒有??
TeaLayout.js 這個文件中下面這一個加上一個 exact 參數(shù),否則你進入 /tea/page01 的時候,直接匹配到了第一個組件,渲染出來的結果還是 TeaIndex
<Route exact path="/tea" component={TeaIndex}/>
<Route path="/tea/page01" component={TeaPage01}/>把 certificationStatus 放到 computed 內綁定。
computed: {
certificationStatus() {
return this.$store.state.certificationStatus
}
}
watch: {
certificationStatus(newVal) {
if(newVal) {
// 操作
}
}
}經實驗及查看文檔發(fā)現(xiàn),find()函數(shù)返回的是類型為cursor的值,而find_one()返回的是數(shù)組或對象,故要訪問返回的文檔的某個字段時根據(jù)使用的查詢函數(shù),若為resu = db.collection.find(),則可通過如下的方式訪問:
resu = db[username + "fileinfo"].find()
historyfilelist = []
try:
for ele in resu:
global historyfilelist
historyfilelist.append(ele["filename"])
return HttpResponse(json.dumps(historyfilelist))
若是采用的find_one()函數(shù),則可以直接通過字典訪問,(如下面的_id獲取的方式)
resu = db[fileinfo['username'] + "fileinfo"].find_one({"filename": filename})
if resu is None:
db[fileinfo['username'] + "fileinfo"].insert(fileinfo)
return HttpResponse(json.dumps({"Uploaded": []}))
elif resu["_id"] == md5:
上面方法親測可行。
v-if 是將元素在dom樹中刪除 建議使用v-show 原理改變display為none 如果需要刪除元素在使用v-if
不知道你用的是什么版本
印象中我好像也出現(xiàn)過這種情況
貌似是js文件有沖突
1.看是不是引用了多個fullcalendar文件
(fullcalendar.js和fullcalendar.min.js不能兩個都引用,只能引用其中一個)
2.檢查fullcalendar用的Jquery的版本是否與引用的一致
(官網上fullcalendar2.x版本開始所引用的都是3.x的JQuery)
使用 mutate(df,lubridate::ymd_hms(ts))
@美麗的e具磨嘰 報錯如上圖
task01() {
console.log('人的一生中')
/*
Websocket.startConnect('/topic/bnevent', ENV['perceive'].interval, (returnData,message) => {
console.log('|||||||---任務1------從服務器讀取數(shù)據(jù)開始---------|||||||');
//console.log(message);
console.log(returnData);
console.log('|||||||---人生-----從服務器讀取數(shù)據(jù)結束---------|||||||');
});
//setTimeout(this.task02, 1000)
*/
}
task02 () {
var _self = this;
console.log('兩億');
Websocket.startConnect('/topic/bnevent', ENV['perceive'].interval, '0, 0, 0', (returnData,message) => {
console.log('|||||||---世界------從服務器讀取數(shù)據(jù)開始---------|||||||');
//console.log(message);
console.log(returnData);
console.log('|||||||---任務2-----從服務器讀取數(shù)據(jù)結束---------|||||||');
});
setTimeout(_self.task01, 1000)
}
task03 () {
console.log('測試任務三個月')
}
const sleep = (time) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve()
}, time)
})
}
async function taskStart(functionArr) {
for (let i = 0; i <= functionArr.length; i++) {
let task = await sleep(1000)
if(i === 0) {
functionArr[i].task01()
}
if(i === 1) {
functionArr[i].task02()
}
if (i === 2) {
i = 0
functionArr[i].task01()
}
console.log(functionArr[i])
}
}
componentDidMount() {
async function asyncFunc(x) {
return x;
}
asyncFunc(501)
.then(x => console.log(x));
async function asyncFuncEr() {
throw new Error('有錯誤');
}
asyncFuncEr()
.catch(err => console.log(err));
this.login('1', 'qwe', 'fgh')
//this.task03();
console.log('任務開始了')
setTimeout(this.task03, 1000)
var Stomp = {}
var _self = this;
Stomp.setInterval = function(interval, f) {
return window.setInterval(f, interval);
};
window.Stomp = Stomp; // 全局變量 就是window屬性
var UtilsBoolean = true; // 從服務器讀取數(shù)據(jù)
let functionArr = [
{
task01:function(){
console.log('這個是task01')
}
},
{
task02:function(){
console.log('這個是task02')
}
}
]
this.taskStart(functionArr);
//
/**
* 讀取服務器的數(shù)據(jù)
*/
if(UtilsBoolean){
/**
* websocket 開始發(fā)送數(shù)據(jù)
*/
console.log('|||||||---開始接收服務器的數(shù)據(jù)---------|||||||');
/*
var taskStart = function(){
console.log('任務開始了')
setTimeout(_self.task02, 1000)
}
*/
//taskStart();
//Websocket.finishConnect();
}
}
我也看不出什么問題,只能給個建議。
1 簡化模型:先用一些在線編輯器使用外部引入vue方式,而不是單文件組件的方式用同樣的代碼實現(xiàn)這個組件,然后在手機端看看有沒有問題。
2 把事件綁定到button,而不是div上試試。
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產業(yè)為響應國家深化產教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產業(yè)鏈。利用北京大學優(yōu)質教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經理從事移動互聯(lián)網管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經理職務負責iOS教學及管理工作。
浪潮集團項目經理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網頁制作和網頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經驗。曾經歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。