雜記2

1.做一個(gè)同步讀取文件的:
uploadFileSync(f: any) {
return new Promise((fulfill, reject) => {
const rd = new FileReader();
rd.onload = async (r) => {
const datas = new Uint8Array(<ArrayBuffer>r.target['result']);
fulfill(datas);
}
rd.readAsArrayBuffer(f);
rd.onerror = (r) => {
reject(null);
};
});
}

這個(gè)方法可以被等待。
async aa () {
for (const f of this._fileInput.nativeElement.files) {
const datas = await this.uploadFileSync(f);
if (datas) {
let index = -1;
for (let i = 0; i < exts.length; i++) {
if (f.name.endsWith(exts[i])) {
index = i;
break;
}
}
if(index >= 0 && index < exts.length) {
fileContent[index] = datas as any[];
}
} else {
this.msgBox.showError('GLOBAL.ULF');
break;
}
}
}

這樣就可以了,看關(guān)鍵代碼,其它代碼無需看。
2.注意,使用一個(gè){datas:5}這樣來做一個(gè)新的對(duì)象,即使使用
{datas:5} as Person也會(huì)丟失掉Person的其它信息,比如speck()方法等。因此,最好使用new Person()來使用,這樣不會(huì)丟失信息。
3.二維數(shù)組,在序列化的時(shí)候,可能會(huì)出錯(cuò)。因此,使用一個(gè)
[ProtoContract]
public class BytesPack
{
[ProtoMember(1)]
public byte[] Datas;
}
來代替即可,將二維數(shù)組扁平化為對(duì)象的一維數(shù)組即可。
3.angular中,select控件的比較好的使用方法:
<select #rr [(ngModel)]="data.FECModeIndex" (change)="data.reset(rr.value)" style="padding-left: 30px;width:100%;border: none">
<option [ngValue]="0">{{'CX_D31.AB6M' | translate}}</option>
<option [ngValue]="1">{{'CX_D31.AA8M' | translate}}</option>
<option [ngValue]="2">{{'CX_D31.AC8M' | translate}}</option>
</select>

注意:select中的ngModel綁定的變量,其實(shí)是option的ngvalue或者value值,而不是顯示出來的值(當(dāng)然,你不寫ngvalue或者value的值的話,那么就是默認(rèn)是顯示的值)。ngvalue可以綁定任何值,而value只能是字符串。
因此,我們可以靈活使用value和ngvalue來綁定了。
注意,如果在select的時(shí)候,要影響其它變量,那么就可以做一個(gè)屬性,即帶有g(shù)et,set的,這樣在set的時(shí)候可以改變其它值。
private _ttt: any;
get tttt() {
return this._ttt;
}
set tttt(value: any) {
this._ttt = value;
}

注意,change只是一個(gè)事件而已,這個(gè)事件只是選擇改變的時(shí)候發(fā)生。
也可以做成select取名,然后使用rr.value來使用,不過感覺有點(diǎn)不爽,還是完全使用數(shù)據(jù)綁定和數(shù)據(jù)驅(qū)動(dòng)較好

動(dòng)態(tài)改變select的選項(xiàng),那么使用
<select #rr [(ngModel)]="data.tttt" (change)="data.change($event)" style="padding-left: 30px;width:100%;border: none">
<option *ngFor="let a of data.tests" [ngValue]="a" >{{a.name}}</option>
</select>
這樣比較好,改變數(shù)組就改變了值。而使用
<option *ngIf="data.FECModeIndex !== 2">{{'CX_D31.PAL' | translate}}</option>
<option *ngIf="data.FECModeIndex !== 2">{{'CX_D31.SECAM' | translate}}</option>
<option *ngIf="data.FECModeIndex !== 2">{{'CX_D31.NTSC' | translate}}</option>
<option>{{'CX_D31.QAM64' | translate}}</option>
<option *ngIf="data.FECModeIndex !== 2">{{'CX_D31.QAM256' | translate}}</option>
<option *ngIf="data.FECModeIndex !== 2">{{'CX_D31.QPSK' | translate}}</option>
<option *ngIf="data.FECModeIndex !== 2">{{'CHANNELTABLE.VSB8' | translate}}</option>
<option>{{'CHANNELTABLE.VOD64' | translate}}</option>
<option>{{'CHANNELTABLE.VOD256' | translate}}</option>
好像不太成功

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容