前端angualr 面試題目

2021-08-21 23:33:50 字數 2681 閱讀 8687

前端angular 題目

1、 angular directive中restrict 中分別可以怎樣設定?scope中@,=,&有什麼區別?

restrict

e(元素):

a(屬性):

c(類):

m(注釋):<--directive:directivename expression-->  

一般情況下e/a/c用得比較多。

單項繫結的字首識別符號。傳遞的值必須是字串且在指令裡引用時必須_x0008_加上}

雙向資料繫結字首識別符號。

繫結函式方法的字首識別符號

2、 中ng-model失效的原因

在ng-if方式中,每個包含的元素都擁有自己的作用域,因此,核取方塊元素也擁有自己的$scope作用域。相對於控制器作用域來說,這個作用域屬於乙個子級作用域,所以,如果它想繫結控制器中的變數值,必須新增$parent標識,只有這樣才能訪問到控制器中的變數。

因此,解決ng-if中ng-model值無效的問題,主要方法就是在繫結值時新增$parent標識,或者用ng-show指令代替ng-if指令,這兩種方法都可以達到同樣的頁面效果。

3、 列出angularjs至少三種實現不同模組之間通訊方式?

1、service 插入模組的即服務的名字

2、events,指定繫結的事件

3、使用 $rootscope

4、controller之間直接使用$parent, $$childhead等

5、directive 指定屬性進行資料繫結

4、 描述svn**commit時可能遇到的情況,遇到衝突如何解決,恢復svn上面的某個版本怎麼搞(可紙面簡要作答)

提交**時候有衝突;正常提交沒有衝突;

有衝突時候的解決辦法:

a、放棄自己的更新,使用svn revert(回滾),然後提交。在這種方式下不需要使用svn resolved(解決)

b、放棄自己的更新,使用別人的更新。使用最新獲取的版本覆蓋目標檔案,執行resolved filename並提交(選擇檔案—右鍵—解決)。

c、手動解決:衝突發生時,通過和其他使用者溝通之後,手動更新目標檔案。然後執行resolved filename來解除衝突,最後提交。

自己當前伺服器的;修改的結果;當前伺服器上的**即最新的;

通過手動修改來整合**再提交

5、 ng-repeat迭代陣列的時候,如果陣列中有相同值,會有什麼問題,如何解決?

會丟擲異常

解決辦法:

ng-repeat =」 item in data track by $index」  指定跟蹤值唯一可以了

6、 自定義乙個過濾器獲取陣列[2,3,1,5,9,0]中的最大值

過濾器的格式與寫法 位址

}return function (待過濾資料, 引數....) } }

自定義控制器

return function (value)

4.ng-if  ng-show的具體區別  對子物件作用域也可以進行雙向繫結

測試題目:}

} }

5.手機端 使用原生的滑塊滾動條,怎樣禁止使用滾動條

overflow-scroll=」false」  scroll=」false」

資料繫結採用的是什麼機制?

髒檢查機制。

雙向資料繫結是 angularjs 的核心機制之一。當 view 中有任何資料變化時,會更新到 model ,當 model 中資料有變化時,view 也會同步更新,顯然,這需要乙個監控。

原理就是,angular 在 scope 模型上設定了乙個 監聽佇列,用來監聽資料變化並更新 view 。每次繫結乙個東西到 view 上時 angularjs 就會往 $watch 佇列裡插入一條 $watch,用來檢測它監視的 model 裡是否有變化的東西。當瀏覽器接收到可以被 angular context 處理的事件時,$digest 迴圈就會觸發,遍歷所有的 $watch,最後更新 dom。

舉個栗子

increase 1

click 時會產生一次更新的操作(至少觸發兩次 $digest 迴圈)

按下按鈕

瀏覽器接收到乙個事件,進入到 angular context

$digest 迴圈開始執行,查詢每個 $watch 是否變化

由於監視 $scope.val 的 $watch 報告了變化,因此強制再執行一次 $digest 迴圈

新的 $digest 迴圈未檢測到變化

瀏覽器拿回控制器,更新 $scope.val 新值對應的 dom

$digest 迴圈的上限是 10 次(超過 10次後丟擲乙個異常,防止無限迴圈)。

關於指令的詳細描述

在指令中的controller和link2個函式的

由此我們可以基本得出在controller和link中應該寫什麼**的結論:

(1)在controller寫業務邏輯(我們明白業務邏輯大部分是放在服務中),這裡所說的業務邏輯乃是為呈現檢視之前而準備的資料或者是與其他指令進行資料互動而暴露這個api。

(2)在link中主要操作dom。

關於自定義指令的解釋位址,發現挺好的

離別是為了下一的重逢

關於replace 的例子說明

複製**

// 銜接上面的**

m1.directive('testdirective', function() }

這是原本的內容

理解:就是替代了原來的標籤

前端面試題目

填空題 console.log a settimeout 0 console.log c promise.resolve then then console.log f 輸出結果為 acfdeb length undefined length 30 var a var b a a.x a a.x u...

前端面試題目總結

答 一 html含義及語法 含義 html hyper text markup language 超文字標記語言,是一種標記語言,用來描述網頁的,而非程式語言。語法 使用固定的標記標籤 單標記和雙標記 來描述網頁。單標記 雙標記 var 宣告存在變數提公升,let和const不存在變數提公升 let...

前端JS筆試面試題目

面試考察的是對整個知識體系的把握,所以要多多的總結,不要小看這些乙個個的知識點,串在一起的時候,就是大問題了 1 js中使用typeof能得到哪些型別 考點 js的變數型別 number boolean string undefined object function 擴充套件 如何判讀乙個變數是陣...