你的代碼不止這些吧,能否貼全,這樣才能判斷問題的所在
有一個titles的屬性。標題集合,順序從左至右。
<Transfer titles={['未選字段', '列表中展示的字段']} />css樣式寫錯了 謝謝大家的點撥
自問自答吧,已解決,https://segmentfault.com/a/11...
其實 es6 的 let 根本沒抓住問題的本質
關鍵在于 js 作為一個允許副作用的語言,它的 closure 卻只支持引用外層作用域的變量,而不支持「引用」外層作用域中變量的值
C++ 就沒有這個問題~
#include <functional>
#include <iostream>
using namespace std;
int main() {
function<void()> a[10];
for (int i = 0; i < 10; i++) {
a[i] = [i] () {
cout << i << '\n';
};
}
a[6](); // 6
}
之所以出現這個反直覺的現象,就是因為你那 10 個函數引用的都是同一個 i 變量,而這個變量的值是 for 循環(huán)最后一次執(zhí)行時的值,也就是 10。
:prop="'domains.' + index + '.value1'" 和 v-model="domain.value1" 不對應
:prop="'domains.' + index + '.value1'" 改為 prop="value1"
v-model="domain"
參見el-form表單驗證:
http://element-cn.eleme.io/#/...
由于 JavaScript 的限制,Vue 不能檢測以下變動的數組:
當你利用索引直接設置一個項時,例如:vm.items[indexOfItem] = newValue
當你修改數組的長度時,例如:vm.items.length = newLength
利用這些 函數進行操作
push()
pop()
shift()
unshift()
splice()
sort()
reverse()
或者對list 重新賦值 即可 list = newList
或者 list.splice(0, list.length -1) 然后 重新 push 一遍
再看看 vue 官網 列表渲染吧
20w字符不需要一次性展示出來,分段進行處理。保證頁面初次渲染加載的滿足可視范圍就行。
mpvue中@click.stop是可以的阻止冒泡的
事件冒泡是由內到外,這是捕獲
resetTime(time: number) {
function countdown() {
var s = time % 60
var m = Math.floor((time / 60)) % 60
var msg = `${(m < 10 ? '0' : '') + m}分鐘${(s < 10 ? '0' : '') + s}秒`
if (--time > 0) {
setTimeout(countdown, 1000)
} else {
// 做結束的事
}
}
countdown()
}你好,你要的效果實現了,看看,有什么疑問可以直接提出或者私信。
<template>
<div>
<el-table
ref="multipleTable"
:data="tableData3"
tooltip-effect="dark"
style="width: 100%"
@click.native="click"
@selection-change="handleSelectionChange">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column
label="日期"
width="120">
<template slot-scope="scope">{{ scope.row.date }}</template>
</el-table-column>
<el-table-column
prop="name"
label="姓名"
width="120">
</el-table-column>
<el-table-column
prop="address"
label="地址"
show-overflow-tooltip>
</el-table-column>
</el-table>
<div style="margin-top: 20px">
<el-button @click="toggleSelection([tableData3[1], tableData3[2]])">切換第二、第三行的選中狀態(tài)</el-button>
<el-button @click="toggleSelection()">取消選擇</el-button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
tableData3: [{
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀區(qū)金沙江路 1518 弄'
}, {
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀區(qū)金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀區(qū)金沙江路 1518 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀區(qū)金沙江路 1518 弄'
}, {
date: '2016-05-08',
name: '王小虎',
address: '上海市普陀區(qū)金沙江路 1518 弄'
}, {
date: '2016-05-06',
name: '王小虎',
address: '上海市普陀區(qū)金沙江路 1518 弄'
}, {
date: '2016-05-07',
name: '王小虎',
address: '上海市普陀區(qū)金沙江路 1518 弄'
}],
multipleSelection: []
}
},
methods: {
toggleSelection(rows) {
if (rows) {
rows.forEach(row => {
this.$refs.multipleTable.toggleRowSelection(row);
});
} else {
this.$refs.multipleTable.clearSelection();
}
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
click(e){
e.preventDefault()
console.log(this.isCtrl)
if(e.button === 0 && this.isCtrl){
this.$refs.multipleTable.toggleAllSelection()
}
}
},
mounted(){
var sUserAgent = navigator.userAgent;
var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel");
document.addEventListener('keydown', e => {
if((e.keyCode === 17 && isWin) || (e.keyCode === 91 && isMac)){
this.isCtrl = true
}
})
document.addEventListener('keyup', e => {
if((e.keyCode === 17 && isWin) || (e.keyCode === 91 && isMac)){
this.isCtrl = false
}
})
}
}
</script>
我判斷了下用戶操作系統(tǒng),如果是window就是ctrl + 鼠標左鍵,如果是macOS,就是command + 鼠標左鍵
我的 webpack.prod.conf.js 配置
plugins: [
...
new ParallelUglifyPlugin({
cacheDir: '.cache/',
uglifyJS: {
output: {
comments: false
},
compress: {
warnings: false
}
},
sourceMap: config.build.productionSourceMap
}),
...
]
打包沒問題
缺mcrypt擴展
找到問題了
"eslint.validate": [
"javascript",
"javascriptreact",
"html",
"vue"
],
"eslint.options": {
// 不要這個,添加之后只識別.html文件 不會去識別.vue
// "plugins": [
// "html"
// ]
},
這個問題找了我4個小時??! 終于解決了
用spawn,參見官方文檔。例如:
要被js執(zhí)行的程序源文件:
// main.cc
#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;
int main() {
ofstream fs;
Sleep(5000);
fs.open("out.txt");
cout << "Rua!" << endl;
fs << "Rua!" << endl;
fs.close();
return 0; }
還有js文件:
// test.js
const { spawn } = require('child_process')
let subprocess = spawn('main.exe', [], {
detached: true,
stdio: 'inherit' // ['ignore', process.stdout, process.stderr]
})
subprocess.unref()
console.log('Bye')
process.exit()
不過暫時沒找到保留控制臺輸出的方法,當然你也可以改為執(zhí)行一個bat,在bat里開新窗口
如下圖所示,先進行一個判斷,判斷target不是undefined、null、string、number、symbol、boolean類型的數據。
1.如果target是一個數組,那么根據key值及數組長度更改數組的長度(取其中較大者),然后直接使用splice函數修改數組,雖然vue沒有監(jiān)聽數組變化,但是監(jiān)聽了數組的push,pop,shift,unshift,splice,sort,reverse函數,所以使用splice也可以達到更新dom的目的
2.如果target是一個對象,且key是對象已存在的私有屬性,那么直接賦值就可以了,因為這個key必然是被監(jiān)聽過的
3.如果這個key目前沒有存在于對象中,那么會進行賦值并監(jiān)聽。這里省略了ob的判斷,那么ob是什么呢,vue中初始化的數據(比如data中的數據)在頁面初始化的時候都會被監(jiān)聽,而被監(jiān)聽的屬性都會被綁定__ob__屬性,這里就是判斷這個數據有沒有被監(jiān)聽的。如果這個數據沒有被監(jiān)聽,那么就默認你不想監(jiān)聽這個數據,所以直接賦值并返回
最后,$set就是set
Vue.prototype.$set = set;jackson 字段動態(tài)過濾
https://github.com/bohnman/squiggly-filter-jackson
https://github.com/narusas/SpringMvcJacksonFilter
https://github.com/shihyuho/jackson-dynamic-filter
使用AOP;自己定義注解,然后在返回的時候加上需要過濾的字段.
切面到自己定義的注解上,然后使用上面的工具,我自己使用 https://github.com/bohnman/sq...
這是我的工具類
https://github.com/yujunhao8831/spring-boot-start-current/blob/master/aidijing-common/src/main/java/com/aidijing/common/util/JsonUtils.java
實現 ResponseBodyAdvice<T> 接口,如果這樣,那么就需要使用統(tǒng)一的返回值類型,把之前的返回值包裝起來.
這樣在Spring Response 寫出去之前,你可以對這些數據進行處理,還是使用jackson的過濾特性.
我之前就是這樣做的, https://github.com/yujunhao88... 你可以參考下
返回之前就立馬進行過濾.
我之后準備采用這個, https://github.com/yujunhao88...
你可以參考下,不過這不是最終的,還在完善中
對著官網一步一步做,就是最快的入門,不會走彎路。
ES6箭頭函數:http://es6.ruanyifeng.com/#do...
上面代碼中,原始意圖是返回一個對象{ a: 1 },但是由于引擎認為大括號是代碼塊,所以執(zhí)行了一行語句a: 1。這時,a可以被解釋為語句的標簽,因此實際執(zhí)行的語句是1;,然后函數就結束了,沒有返回值。
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數據專業(yè)的國家
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產業(yè)為響應國家深化產教融合/校企合作的政策,積極推進“中國制造2025”,實現中華民族偉大復興的升級產業(yè)鏈。利用北京大學優(yōu)質教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經理從事移動互聯網管理及研發(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)架構師。