我遇到了一些獨特的問題,我一直在試圖解決它。AngularFire2在iOS瀏覽器中導致無限循環
我有一個Angular2應用程序使用WebPack和AngularFire2來操作元數據。我正在處理的當前功能是能夠將文件上傳到Firebase存儲,獲取該位置的URL,然後將該URL附加到文件上傳到的對象的元數據,供用戶查看是否需要。這在所有桌面和Android瀏覽器中都可以使用,但在幾乎所有iOS瀏覽器(在Safari,Chrome,Firefox上測試,所有相同的結果)上都失敗,並且出現0個控制檯或系統錯誤,只是拒絕在該網站上執行任何操作,無法重新加載,無法做任何事情,但強制關閉標籤或瀏覽器應用程序並重新加載。
這裏是我的代碼崩潰:
這是通過FirebaseListObservable
循環,並在視圖中顯示數據的HTML:
<div *ngFor="let item of items | async">
<input type="file" name="file" id="{{ item.$key }}" class="inputfile" (change)="uploadPicture($event, item)"/>
<label [attr.for]="item.$key">{{item.name}}</label>
<img *ngIf="item.fileUrl" src="../../assets/img/star.png" class="cell-img" (click)=showImg(item.fileUrl)>
</div>
上傳文件:
firebase.storage().ref().child('images/' + filename).put(file, metadata).then(snapshot => this.obtainUploadUrl(snapshot, key, filename));
獲取文件位置URL並傳遞Firebase對象密鑰(位於FirebaseListObservable中)後,我按如下方式更新列表:
console.log("Updating", key, "With", data);
this.af.database.list('/games/' + this.currentGame.$key + '/items').update(key, data);
據我瞭解故障發生的任何地方我操縱items
列表或獲取快照文件上傳後,當地this.items
。當我嘗試更新,推送或刪除該移動網站中的任何對象時,移動網站停止工作並陷入一些無限循環。
必須要有一些特殊情況我沒有考慮到或者有些誤用了iOS對我不滿意的Firebase對象。
任何幫助都是值得讚賞的,我似乎無法找到任何解決方案,但不使用Firebase。
UPDATE
劈砍而去它的另一天之後,我發現,火力點,在iOS瀏覽器內,不喜歡內更新視圖中的項目,至少,輸入點擊功能。
<input type="file" name="file" id="{{ item.$key }}" class="inputfile" (change)="uploadPicture($event, item, items)"/>
內部的uploadPicture功能,如果我跑兩行代碼:
firebase.storage().ref().child('images/' + filename).put(file, metadata).then(snapshot => console.log("File uploaded!", snapshot));
this.items.update(key, {fileName: filename});
我在iOS相同的錯誤。但是,如果我嘗試更改任何其他Firebase對象,它將不會凍結在我身上。仍然不知道爲什麼現在只是iOS的失敗,我仍然不知道如何解決這個問題。