基本上只能通過數(shù)值映射或者循環(huán)兩個數(shù)組來處理
不可以。
antd是按需引用的,并且是組件化的,假設(shè)可以一次性注入所有組件。你覺得合理嗎?
肯定不合理啊,是吧。
攔截器中的Reflect.apply應(yīng)該相當(dāng)于調(diào)用sum.bind(ctx)。ctx是調(diào)用時的上下文對象,這里是undefined
這樣你調(diào)用proxy(1,2)的返回值就相當(dāng)于,Reflect.apply(...arguments)*2,也就是sum.bind(undefined)(1,2)。
阮大大有寫到:
Proxy 用于修改某些操作的默認(rèn)行為,等同于在語言層面做出修改,所以屬于一種“元編程”(meta programming),即對編程語言進(jìn)行編程。
Proxy 可以理解成,在目標(biāo)對象之前架設(shè)一層“攔截”,外界對該對象的訪問,都必須先通過這層攔截,因此提供了一種機制,可以對外界的訪問進(jìn)行過濾和改寫。
我個人理解是,本來你能直接達(dá)到目標(biāo)(直接調(diào)用sum),而現(xiàn)在你想訪問對象會經(jīng)過一個攔截層,你可以在調(diào)用前修改參數(shù),也可以在調(diào)用后修改返回值(比如本例的*2)。
攔截器類似元編程,相當(dāng)于修改語言特性的語法,比如本例就是對函數(shù)的apply機制進(jìn)行修改,其他代理如get、set等相當(dāng)于對對象的讀寫特性進(jìn)行了修改,表面上看就好像語言特性被修改了。
看下這兩個例子應(yīng)該就能明白如何用Proxy來代理一個函數(shù):
function sum(left, right) {
return (this.x || left) + right;
}
var twice = {
apply(target, ctx, args) {
console.log(ctx == obj);
return Reflect.apply(...arguments) * 2;
},
};
var proxy = new Proxy(sum, twice);
let obj = { test: "test", proxy, x: 33 };
console.log(obj.proxy(1, 2));
//true
//70
//可見ctx為執(zhí)行環(huán)境this
var twice_changeParams = {
apply(target, ctx, args) {
args[1] = args[1] + 5;
return Reflect.apply(...arguments) * 2;
},
};
proxy = new Proxy(sum, twice_changeParams);
console.log(proxy(1, 2));
// 16
//16為sum(1,(2+5))*2 分別對輸入和輸出進(jìn)行了攔截
//這就是攔截器的含義低級錯誤啊,split跟v-show都雙引號套雙引號了。
你這個package.json有點老了吧。
升級一下weex-toolkit。
使用webpack創(chuàng)建一個新的weex項目,看看現(xiàn)在的package.json對比一下
<Modal destroyOnClose modifyData={data} destroyOnClose={true}/>,再在componentDidMount中修改就行了;
destroyOnClose 關(guān)閉時銷毀 Modal 里的子元素
試了一下,easyui不支持跨頁面,但你可以動態(tài)地在top中引入easyui再打開window,或者你可以自己在top里手動畫一個window。其次,你的第二張圖報的錯是因為你的top中沒有引入jQuery,你可以top.$ = $;,但沒什么卵用,創(chuàng)建的window會在iframe里。另外Google Chrome是沒有你的第一張圖的問題的。
import datetime
# 參數(shù)變量 (待填寫)
ContractType = "rb1710" # 標(biāo)的物合約代碼 ,螺紋鋼 1710 合約 目前主力合約
UsedRatio = 0.5
# 全局變量 (待填寫)
Interval = 500; # 輪詢時間 , 毫秒 , 500 毫秒 = 0.5 秒
Balance_Unit = 0
ContractTypeInfo = None # 合約信息
initAccount = None # 初始賬戶信息
LONG = 1
SHORT = 2
# 功能函數(shù) (待填寫)
def loop(): # 主循環(huán)函數(shù)
pass
def CheckBalance_Unit(Direction):
global ContractType,UsedRatio,Interval,Balance_Unit,ContractTypeInfo,initAccount,LONG,SHORT
ContractTypeInfo = exchange.SetContractType(ContractType)
Log("標(biāo)的物合約信息:", ContractTypeInfo)
Balance_Unit = _N(initAccount.Balance * UsedRatio / 10, 2)
Log("賬戶信息:", initAccount, "資金分配 10份,一份為:", Balance_Unit)
ticker = _C(exchange.GetTicker)
OneContractMargin = ContractTypeInfo.VolumeMultiple * ticker.Last * (ContractTypeInfo.LongMarginRatio if Direction == LONG else ContractTypeInfo.ShortMarginRatio)
if Balance_Unit < OneContractMargin * 1.2:
Log("最新價格:" + ticker.Last + "調(diào)整系數(shù)1.2" + " ,資金可用部分的10分之一 不足 開" + ("多" if Direction == LONG else "空") + "1手合約," + "1手合約需:" + OneContractMargin)
else:
Log("最新價格:" + ticker.Last + "調(diào)整系數(shù)1.2" + "1份資金 可開:", "多" if Direction == LONG else "空", _N(Balance_Unit / OneContractMargin, 0));
nowAccount = _C(exchange.GetAccount);
if nowAccount.Balance < Balance_Unit:
Log("當(dāng)前賬戶資金已小于初始資金可用部分的十分之一。當(dāng)前資金:" + nowAccount.Balance + ", 初始資金可用部分的十分之一為:" + Balance_Unit)
elif nowAccount.Balance < OneContractMargin * 1.2:
Log("資金不足:" + JSON.stringify(nowAccount) + ", 系數(shù)1.2,1手合約保證金:" + OneContractMargin)
# 入口函數(shù) main
def main():
# 程序的初始化工作 (待填寫)
global ContractType,UsedRatio,Interval,Balance_Unit,ContractTypeInfo,initAccount,LONG,SHORT
while True:
initAccount = exchange.GetAccount()
if exchange.IO("status") and initAccount is not None:
break
LogStatus("等待交易時間獲取賬戶信息初始化!" + "時間:", datetime.datetime.now().strftime('%Y-%m-%d'))
Sleep(Interval)
CheckBalance_Unit(LONG)
CheckBalance_Unit(SHORT)
# 主循環(huán), 程序完成初始化后在此 循環(huán)執(zhí)行,直到手動關(guān)閉。
LoginState = None
nowTimeStamp = 0
while True:
nowTimeStamp = datetime.datetime.now();
if exchange.IO("status"):
LoginState = True
loop()
else:
LoginState = false
LogStatus("時間:", _D(nowTimeStamp),"已連接服務(wù)器" if LoginState else "未連接服務(wù)器!")#, 待顯示的一些信息可以寫在此處,如賬戶信息,實時行情,程序狀態(tài)
Sleep(Interval) # 暫停 0.5 秒, 避免輪詢頻率過高,訪問交易所服務(wù)器過于頻繁導(dǎo)致問題。
def onexit():
# 做一些在程序停止時的 收尾工作。(待填寫)
Log("程序退出!")或者誰有另外的寫法 求教
你的elementUI是哪個版本看了下:2.1才有這個屬性
找到了這個地址,看了看
const evalExpr = /<%=(.+?)%>/g;//(.+?)相當(dāng)于是匹配一行的內(nèi)容
//這個是從'<%='開始到'%>'結(jié)束,如果中間換行了不會匹配,例如 <%=val%>那么val就是被匹配到的值
const expr = /<%([\s\S]+?)%>/g;//([\s\S]+?)可以匹配多行
//這個是從'<%'開始到'%>'結(jié)束,換行了也會繼續(xù)匹配到
//兩個表達(dá)式的后面/g,相當(dāng)于是參數(shù),g表示著全局,就是只要符合這個匹配條件的都會匹配到
//emmmmmmmmm我覺得我表達(dá)得可能不是很清楚... . + ? \s \S可以去翻一下正則的手冊了解一下
parse傳參數(shù)為什么要這么傳,這個就是由你的模板決定的了,
let template = `
<ul>
<% for(let i=0; i < data.length; i++) { %>
<li><%= data[i] %></li>
<% } %>
</ul>
`;
//data.supplies.length 修改成data.length data.supplies[i],修改成data[i] 這樣你就可以傳入數(shù)組了
console.log(parse(["broom", "mop", "cleaner"]));
template為什么不用定義聲明?啥意思,沒懂
為什么它還有方法.replace?template是一個string對象,本來就有著replace這個方法 string對象 string對象 replace方法 了解一下
不是很懂template那段寫的是什么意思?
這個主要就是替換了
template = template
.replace(evalExpr, '`); \n echo( $1 ); \n echo(`')
.replace(expr, '`); \n $1 \n echo(`');
//咋說呢emmmm,我們拆開一下,先看看上面的string對象 replace方法,主要就是替換文本
template = template.replace(evalExpr, '`); \n echo( $1 ); \n echo(`');
//evalExpr = /<%=(.+?)%>/g; 前面已經(jīng)知道了是替換文本中的 <%=xxxxx%>的內(nèi)容
//所以這個語句就是,吧template里面的所匹配到的<%=xxxxx%>的內(nèi)容替換掉
//替換成什么呢?替換成 "); \n echo( $1 ); \n echo(" ,里面最核心的就是$1了
//$1表示與 regexp(evalExpr 正則表達(dá)式) 中的第 1 到第 99 個子表達(dá)式相匹配的文本。(我copy w3c的)
//也就是(.+?)表示的內(nèi)容,對就是 xxxxx 那玩意
//然后我的文本(<%=xxxxx%>)就變成了 "); \n echo( xxxxx ); \n echo("
//返回這個文本,template又被賦值了,進(jìn)入下一個
template = template.replace(expr, '`); \n $1 \n echo(`');
//同上啊,這回只是 <%([\s\S]+?)%> 變成了 "`); \n xxxxx \n echo(`"
//上面的單引號我都換成了雙引號,'和`看得有點亂....
template = 'echo(`' + template + '`);';//文本相加,這個應(yīng)該很容易看懂吧
let script =
`(function parse(data){
let output = "";
function echo(html){
output += html;
}
${ template }
return output;
})`;
//也是文本合成
return output; //返回這一串合成的代碼
我覺得樓主可以用調(diào)試功能,這樣可以看到每一個變量的每一步變化過程,再不濟用console.log()也不錯
var jsonpCallback =
改成window.jsonpCallback
小程序生成二維碼需要appid和secret,你在A小程序里掉生成二維碼接口,里面填小程序B的appid和secret,就生成B的二維碼了
使用 ref 和 $el 可以獲得 popover 對應(yīng)的 DOM 元素,然后就可以設(shè)置位置了。
可以看一下官方文檔中關(guān)于 ref 和 $el 的說明。
寫了個簡單的例子,不知道能否滿足你的需求
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。