菜鳥踩坑記錄彙總
1.json檔案裡面不能添加註釋//或者/**/
今天想當然的用//註釋了一條json檔案中的語句,結果編譯時,執行npm install出現錯誤,分析了一下錯誤資訊
發現是註釋惹的禍。
JSON結構:
名稱/值對的集合:key : value樣式;
值的有序列表:Array;
在JSON的文件中說明只要是不符合上面兩種結構的都不支援
2.node_modules裡面都是編譯後的檔案,而元件直接編譯後,compile資料夾下面就是和node_mudules裡同類型的檔案。本地編譯測試時,可以直接替換,但是要注意替換後,需要把package.josn 檔案中相關元件的依賴語句刪除,否則npm install的時候還是會從倉庫中獲取元件,達不到替換的目的了。
3.微服務建立相關
4.javascript如何去除物件的某個屬性?
答:var obj = {key1: 'value1', key2: 'value2'};
delete obj.key1;
5.編譯失敗報錯
Metadata version mismatch for module ............./src/main/iui/node_modules/@ng-bootstrap/ng-bootstrap/accordion/accordion-config.d.ts, found version 4, expected 3
這個依賴版本應該升級了,導致版本不匹配,研究報錯日誌總能找到解決辦法。
6.js的陣列處理圖解:
7.今天選單又出問題了,打不開,F12定位以後發現一個依賴檔案沒有更新,折騰了大半天,又是依賴的問題!
8.獲取當前url的問題:
如果是一個頁面有子視窗和父視窗:
window.location.pathname---獲取子視窗url的路徑
window.location.href---獲取子視窗整個 URL 為字串
等等一系列方法
top.location.pathname---獲取父視窗url的路徑
top.location.href---獲取父視窗整個 URL 為字串
或者
window.parent.location.pathname---獲取父視窗url的路徑
window.parent.location.href---獲取父視窗整個 URL 為字串
9.寫入和讀取瀏覽器的localstorage
參考地址:https://www.cnblogs.com/st-leslie/p/5617130.html
寫入3種方法:
if(!window.localStorage){
alert("瀏覽器不支援localstorage");
return false;
}else{
var storage=window.localStorage;
//寫入a欄位
storage["a"]=1;
//寫入b欄位
storage.a=1;
//寫入c欄位
storage.setItem("c",3);
console.log(typeof storage["a"]);
console.log(typeof storage["b"]);
console.log(typeof storage["c"]);
}
讀取3種方法:
if(!window.localStorage){
alert("瀏覽器不支援localstorage");
}else{
var storage=window.localStorage;
//寫入a欄位
storage["a"]=1;
//寫入b欄位
storage.a=1;
//寫入c欄位
storage.setItem("c",3);
console.log(typeof storage["a"]);
console.log(typeof storage["b"]);
console.log(typeof storage["c"]);
//第一種方法讀取
var a=storage.a;
console.log(a);
//第二種方法讀取
var b=storage["b"];
console.log(b);
//第三種方法讀取
var c=storage.getItem("c");
console.log(c);
}
10.今天在angular2一個模組中呼叫框架的一個介面函式,但是呼叫時ts自動檢測老是報錯,檢查不到這個函式,因為本地檔案並找不到這個函式,只有等編譯後,部署到伺服器上,才能呼叫框架的函式,但是現在自動檢測報錯,本地編譯不能通過,這時的一個解決辦法就是在ts檔案最頂端新增如下程式碼即可:
declare var top: any;這時呼叫就不會檢測報錯了。
top.frameWork
11.當幾個模組相互跳轉時,對應的選單可能不重新整理資料,這時可能和快取有關,也許選單配置了快取項。
12.關於回撥函式,回撥函式傳遞給另一個函式時,傳遞的僅僅是函式名,
即我們可以像使用變數一樣使用函式,作為另一個函式的引數,在另一個函式中作為返回結果,在另一個函式中呼叫它。當我們作為引數傳遞一個回撥函式給另一個函式時,我們只傳遞了這個函式的定義,並沒有在引數中執行它。見下例:
function logStuff (userData) {
}
function getInput (options, callback) {
callback (options);
}
getInput ({name:"Rich", speciality:"JavaScript"}, logStuff);
13.input單選框radio一定要加name屬性才起作用!如何讓瀏覽器知道這是道單選題呢,radio通過同名也就是同name來實現,單選框的 name
屬性是來定義同一組radio的,這兩個radio不在同一組,如果你不寫name,是沒辦法使用單選的。
14.angular2中使用radio的坑,ngmodle繫結的衝突,待補。
15.
問題:Angular 2+ and Observables: Can't bind to 'ngModel' since it isn't a known property of 'select'
解決:
>= RC.5
The FormsModule
needs to be imported to make ngModel
available
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [BrowserModule /* or CommonModule */,
FormsModule, ReactiveFormsModule],
...
)}
class SomeModule {}
<= RC.4
In config.js
add
'@angular/forms': {
main: 'bundles/forms.umd.js',
defaultExtension: 'js'
},
in main.ts
add
import {provideForms, disableDeprecatedForms} from '@angular/forms';
bootstrap(App, [disableDeprecatedForms(),provideForms()])
16.
margin相對的元素在不同的情況下有所不同:
如果父元素在子元素的margin的同向上有padding或border的話,子元素的margin相對於父元素,否則相對於父元素以外的元素。
17.css定位問題
利用input和ul li 寫了一個地理位置元件,在上面3個input按inline-block排列,首先會遇到一個空格的問題,3個input之間除了margin的配置,其實還有一個空格,程式碼形如:
//第一個input < div class= "divInput" > < input /> < div > < ul > < li >{{item}} </ li > </ ul > </ div > </ div >(空格在這裡,本來是換行,當設定display:inline-block時,就形成了一個小空格) < div class= "divInput" > //第二個input < input /> < div > < ul > < li >{{item}} </ li > </ ul > </ div > </ div >網上大概有幾種不同的解決方案,最後為了方便採用這種:
//第一個input
<div class="divInput">
<input />
<div >
<ul>
<li>{{item}}</li>
</ul>
</div>
</div><div class="divInput" > //第二個input(兩個div緊挨著寫即可去掉空格)
<input />
<div >
<ul >
<li >{{item}}</li>
</ul>
</div>
</div>
17(1).定位問題
<div class="divInput"> //input父塊要設定為position:relative,不可省略,這樣下拉列表的就與input同寬了。
<input />
<div > //為了顯示下拉框不影響佈局,ul的div塊設定position:absolute,還有就是寬度問題,怎麼保證和input同寬,width:100%
需要注意,這個100%需要相對於input父塊,所以要把input父塊設定為position:relative;
<ul>
<li>{{item}}</li>
</ul>
</div>
</div><div class="divInput" > //第二個input(兩個div緊挨著寫即可去掉空格)
<input />
<div >
<ul >
<li >{{item}}</li>
</ul>
</div>
</div>