全局添加樣式
::-webkit-scrollbar{
display:none;
}
目前用這種方式可以解決滾動條的問題
猜測1: 你是不是設(shè)置 mapping 的時候, 對該對象數(shù)組采用了 object 類型的索引, 這應(yīng)該就是應(yīng)對嵌套文檔的默認(rèn)策略. 如果使用的是 object 類型的索引, 那么對象數(shù)組會被拍平. 參見如下三篇官方文檔:
猜測2: 是不是你的一部分文檔沒有 operation.operation_id 這個字段, 導(dǎo)致結(jié)果不準(zhǔn)確. 這時可以對該字段設(shè)置默認(rèn)值. 官方文檔: missing value
猜測3: 是不是 operation.operation_id 這個字段在所有文檔中有多種類型. 比如最開始存了 int, 后來存了 string. 我反正常干這事, 因?yàn)槲业纳嫌螖?shù)據(jù)源是日志, 日志里的字段更改是常事. 我的做法是, 只查更改后的那部分索引, 因?yàn)? mapping 更改規(guī)則生效是在新索引建立, 比如3月1日改 mapping, 那么 index-2018-03-02 這個索引規(guī)則才會生效, 此時如果跨索引查詢, 比如查詢整個3月, 則會出問題. 此時可以查詢3月2日至3月31日.
直接用npm安裝依賴包就行了,安裝好之后不用配置,自動會編譯
npm i sass-loader -D / npm i node-sass -D
參考: https://github.com/Meituan-Dianping/mpvue/issues/232
在switch(expression)中,expression只能是一個整數(shù)表達(dá)式或者枚舉常量,整數(shù)表達(dá)式可以是int類型或Integer包裝類型。由于,byte,short,char都可以隱式轉(zhuǎn)換為int類型,所以,這些類型也可以用作表達(dá)式。
你可以把兩個值存在一個新數(shù)組里,也就是枚舉常量,判斷第一個常量的case后面不寫break,程序會繼續(xù)執(zhí)行,如果你兩個值都有case滿足,則兩個case都能執(zhí)行的到。不知道是不是滿足你的要求~
Converter<String, Date> 接口必然有一個sourceType和targetType,這里就是String和Date,然后這兩個類型組成一個key,邏輯上可以認(rèn)為類似String_Date,而對應(yīng)的value就是你自定義的converter。因此只要是從String轉(zhuǎn)換為Date的變量,都會用這個converter進(jìn)行轉(zhuǎn)換。
GenericConversionService.getConverter方法中:
protected GenericConverter getConverter(TypeDescriptor sourceType, TypeDescriptor targetType) {
ConverterCacheKey key = new ConverterCacheKey(sourceType, targetType);
GenericConverter converter = this.converterCache.get(key);
if (converter != null) {
return (converter != NO_MATCH ? converter : null);
}
converter = this.converters.find(sourceType, targetType);
if (converter == null) {
converter = getDefaultConverter(sourceType, targetType);
}
if (converter != null) {
this.converterCache.put(key, converter);
return converter;
}
this.converterCache.put(key, NO_MATCH);
return null;
}
傳輸過來的不都是string類型的么,那么轉(zhuǎn)換器會將每個字段都轉(zhuǎn)換一遍么
前半句沒錯,后半句稍加修改:轉(zhuǎn)換器會將所有Date類型的字段都轉(zhuǎn)換一遍
其實(shí)前端變量轉(zhuǎn)換并不一定是通過converter的方式,還有兩種方式推薦:
public class Person {
private String name;
private Integer age;
@DateTimeFormat(pattern = "yyyyMMdd")
private Date birthDay;
private Float salary;
private Integer version;
}
PropertyEditor
public class DemoController {
@InitBinder
public void intDate(WebDataBinder dataBinder) {
dataBinder.addCustomFormatter(new DateFormatter("yyyyMMdd"));
}
....
}
這種方式也可以指定轉(zhuǎn)換只應(yīng)用到某個指定field上
循環(huán)中做一個判斷 如果大于6 讓循環(huán)的key初始化
有個$slots屬性
microtask queue里有兩個 Promise 回調(diào),都跑完了才能走下一個macrotask queue
目測使用了 css module, 需要切換到全局 scope.
:global([v-cloak]) {
display: none;
}找到問題了,是因?yàn)橐韵聦戝e了
public registerOnChange(fn:any){
console.log(fn);
this.propagateChange(fn);
}
改為:
public registerOnChange(fn:any){
console.log(fn);
this.propagateChange=fn;
}你那是native應(yīng)用,調(diào)用windows api的,網(wǎng)頁實(shí)現(xiàn)不了
你開個網(wǎng)頁微信試試看就知道了
遇到了同樣的問題,請問你解決了嗎?
1:封裝的時候你可以將定時器id作為返回值的一部分,然后通過clearInterval清除
2:封裝里面加上清除的操作的方法
事件委托
“帶參數(shù)的裝飾器”,這樣的描述并不準(zhǔn)確,@desc(arg) 更好的理解是函數(shù) desc 被調(diào)用,該函數(shù)返回一個裝飾器。況且你已經(jīng)知道處理方法了,只是想要知道為什么。這點(diǎn)上是一點(diǎn)就通的。
先理解一個,函數(shù)允許重新賦值的
def f():
pass
f = 1
print(f) # 1
然后你對裝飾器的理解也已經(jīng)很充分了:
@log(i, j, k)
def f():
# 等價于
tmp = log(i,j,k)
@tmp
def f():
這里的原因在于,你把 log 重新賦值了,它變成了一個裝飾器,而不是一個返回裝飾器的函數(shù)。嗯,原因就是這么簡單。
你的擴(kuò)展在頁面內(nèi)提供一個全局變量就好了.
window.__myExtension = {
openView() {
// do something
}
}
點(diǎn)擊 btn 的時候只需要調(diào)用 __myExtension.openView()
1.直接用position:sticky
2.監(jiān)聽滾動,在滾動到某個位置時,設(shè)置position為fixed或者absolute
用<xmp></xmp>把標(biāo)簽包起來。不知道是不是你想要的結(jié)果。
已經(jīng)自己寫了一個解析方法
/**
* 解析字符串為 Date 對象
* @param dateStr 日期字符串
* @param fmt 日期字符串的格式
* 目前僅支持使用 y(年),M(月),d(日),h(時),m(分),s(秒),S(毫秒)
*/
Date.of = function (dateStr, fmt) {
if (!dateStr) {
throw new Error('傳入的日期字符串不能為空!');
}
if (!fmt) {
throw new Error('傳入的日期字符串的自定義格式不能為空!');
}
/**
* 日期格式化對象
* @param name 日期格式的名稱
* @param format 日期的格式值
* @param value 格式化得到的值
* @constructor
*/
function DateFormat(name, format, value, index) {
this.name = name;
this.format = format;
this.value = value;
this.index = index;
}
//日期時間的正則表達(dá)式
const dateFormats = {
year: 'y{1,4}',
month: 'M{1,2}',
day: 'd{1,2}',
hour: 'h{1,2}',
minute: 'm{1,2}',
second: 's{1,2}',
milliSecond: 'S{1,3}'
};
//如果沒有格式化某項(xiàng)的話則設(shè)置為默認(rèn)時間
const defaultDateValues = {
year: '2001',
month: '01',
day: '01',
hour: '00',
minute: '00',
second: '00',
milliSecond: '000'
};
//保存對傳入的日期字符串進(jìn)行格式化的全部信息數(shù)組列表
const dateUnits = [];
for (const fmtName in dateFormats) {
const regExp = new RegExp(dateFormats[fmtName]);
if (regExp.test(fmt)) {
const matchStr = regExp.exec(fmt)[0];
const regexStr = String.fill('`', matchStr.length);
const index = fmt.indexOf(matchStr);
fmt = fmt.replaceAll(matchStr, regexStr);
dateUnits.push(new DateFormat(fmtName, String.fill('\\d', matchStr.length), null, index));
} else {
dateUnits.push(new DateFormat(fmtName, null, defaultDateValues[fmtName], -1));
}
}
//進(jìn)行驗(yàn)證是否真的是符合傳入格式的字符串
fmt = fmt.replaceAll('`', '\d');
if (!new RegExp(fmt).test(dateStr)) {
return null;
}
//進(jìn)行一次排序, 依次對字符串進(jìn)行截取
dateUnits.sort(function (a, b) {
return a.index - b.index;
});
for (var i = 0, length = dateUnits.length; i < length; i++) {
const format = dateUnits[i].format;
if (format == null) {
continue;
}
const matchDateUnit = new RegExp(format).exec(dateStr);
if (matchDateUnit !== null && matchDateUnit.length > 0) {
dateStr = dateStr.replace(matchDateUnit[0], '');
dateUnits[i].value = matchDateUnit[0];
}
}
//將截取完成的信息封裝成對象并格式化標(biāo)準(zhǔn)的日期字符串
const obj = dateUnits.toObject(function (item) {
return {
key: item.name,
value: item.value
};
});
const date = '{year}-{month}-{day} {hour}:{minute}:{second}:{milliSecond}'.format(obj);
try {
return new Date(date);
} catch (e) {
return null;
}
};
//下面是上面的 Date.of() 使用的一些輔助方法
/**
* 替換所有匹配exp的字符串為指定字符串
* @param exp 被替換部分的正則
* @param newStr 替換成的字符串
*/
String.prototype.replaceAll = function (exp, newStr) {
return this.replace(new RegExp(exp, "gm"), newStr);
};
/**
* 原型:字符串格式化
* @param args 格式化參數(shù)值
*/
String.prototype.format = function (args) {
var result = this;
if (arguments.length < 1) {
return result;
}
var data = arguments; // 如果模板參數(shù)是數(shù)組
if (arguments.length === 1 && typeof (args) === "object") {
// 如果模板參數(shù)是對象
data = args;
}
for (var key in data) {
var value = data[key];
if (undefined !== value) {
result = result.replaceAll("\\{" + key + "\\}", value);
}
}
return result;
};
/**
* 為 js 的 String 添加填充字符串的靜態(tài)方法
* @param item 填充的元素
* @param length 填充的長度
* @returns {string} 填充得到的字符串
*/
String.fill = function (item, length) {
var result = '';
for (var i = 0; i < length; i++) {
result += item;
}
return result;
};
/**
* js 數(shù)組轉(zhuǎn)換為一個 Object 對象
* @param fn 轉(zhuǎn)換方法
* @returns {{}} 得到的 Object 對象
*/
Array.prototype.toObject = function (fn) {
const obj = {};
this.map(fn)
.forEach(function (item) {
obj[item.key] = item.value;
});
return obj;
};
嗯,順便也發(fā)了一篇 blog 呢
https://rxliuli.blogspot.com/...
https://github.com/Microsoft/... issue 鏈接,暫時沒有找到解決方案。我把自定義的樣式注釋掉了。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。