AngularJs學(xué)習(xí)第二天

Angular VS jQuery

  • jQuery:庫

    • 封裝了一些常用的方法幽纷,我們主動調(diào)用這些方法
  • Angular:框架

    • 框架提供了一些結(jié)構(gòu)或者模式博敬,
    • 我們按照框架提供的規(guī)則去寫代碼
    • 然后由框架自己去執(zhí)行相應(yīng)的操作
  • 思想上:
    jQuery: 提高了dom操作的開發(fā)效率偏窝。
    Angular: 不提倡dom操作,幾乎沒有dom操作(底層還是操作的dom)
    + angular中操作dom angular.element() ,叫做jqLite

angular.element

  • 輕量級的jQuery,
    注意:在獲取dom對象時傳入的參數(shù)是一個原生dom對象

復(fù)習(xí)并總結(jié)Angular開發(fā)流程

0.通過npm/bower/暴力的方式/cdn 拿到想到angular.js文件伦意。
1.在HTML代碼中引入angular.js這個文件
2.在HTML代碼上加上ng-app指令硼补,告訴angular來管理我們的代碼,這個指令只能使用一次
3.在JS代碼中通過angular.module('模塊名',[])創(chuàng)建一個模塊离钝,然后在HTML中的ng-app指令指定一下模塊名'ng-app="模塊名"'

  1. 在JS代碼中創(chuàng)建控制器xxx.controller('控制器的名字',function(){}),在HTML代碼中通過ng-controller指令由我們當前的控制器來管理數(shù)據(jù)模型ng-controller="控制器的名字"
  2. 建模(根據(jù)頁面原型抽象出數(shù)據(jù)模型), 最終得到視圖模型(ViewModel)
  3. 通過$scope來暴露頁面上所需要使用的一些數(shù)據(jù)
  4. 在HTML代碼中通過ng-model/ng-click/{{}} 將剛剛暴露的數(shù)據(jù)綁定到頁面上去
  5. 在JS中寫一些具體業(yè)務(wù)相關(guān)的代碼

復(fù)習(xí)MVC

  • MVC是一種設(shè)計思想,它是約定了程序的結(jié)構(gòu)應(yīng)該是怎么奈辰。
  • 每一個組成原件都會有一個明確的職責(zé)乱豆。
  • 提高代碼的結(jié)構(gòu)和可維護性(代碼的執(zhí)行效率肯定是不會提高的,10行代碼论泛,會分到10個不同的方法蛹屿。);

$scope

  • 視圖和控制器之間的數(shù)據(jù)橋梁
  • 用于在視圖和控制器之間傳遞數(shù)據(jù)
  • 用來暴露數(shù)據(jù)模型(數(shù)據(jù),行為)

ViewModel

  • $scope 實際上就是MVVM中所謂的VM(視圖模型)
  • 正是因為$scope在Angular中大量使用甚至蓋過了C(控制器)的概念坟瓢,所以很多人(包括我)把Angular稱之為MVVM框架
  • 這一點倒是無所謂折联,具體看怎么用罷了

模塊

模塊的創(chuàng)建

通過anuglar.mdoule()方法來創(chuàng)建模塊.

*注意,如果傳入兩個參數(shù)就是去創(chuàng)建模塊识颊,如果只傳入第一個參數(shù),就會變成獲取模塊清笨。*

模塊的劃分式

1.根據(jù)項目中具體的功能去劃分模塊

2.根據(jù)具體的文件功能的類型去劃分模塊

控制器的創(chuàng)建方式

傳統(tǒng)的方式創(chuàng)建控制器(不推薦使用這種方式)

    // 通過全局函數(shù)來創(chuàng)建控制器
        // angular會把我們創(chuàng)建的全局函數(shù)作為控制器使用
        function demoController($scope){
            $scope.name='小明';
        }

面向?qū)ο蟮姆绞絼?chuàng)建控制器

    <div ng-controller="demoController as obj ">
        {{obj.name}}
        {{age}}
    </div>
    <!-- 1.引入angular.js文件 -->
    <script src="node_modules/angular/angular.js"></script>
    <script>
        // 3.創(chuàng)建模塊
        var app =angular.module('myApp',[]);

        // 4.創(chuàng)建控制器
        app.controller('demoController',function($scope){
            // 可以當作構(gòu)造函數(shù)來使用
            this.name="小明";
            $scope.age=12;
        })
    </script>

安全的創(chuàng)建控制器的方式

  • 原因:angular在控制器的回調(diào)函數(shù)中是通過參數(shù)名來傳遞參數(shù)的抠艾。
  • 通過將第二個參數(shù)改為數(shù)據(jù)組:數(shù)據(jù)的最后一個參數(shù)還是原來的fucntion,數(shù)據(jù)前的參數(shù)是我們想要anuglar傳遞的參數(shù)的字符串形式奠伪,fucntion里的參數(shù)需要與數(shù)組前面的元素一對應(yīng)首懈。
    app.controller('demoController',['$scope','$log',function($scope,$log){}])

依賴注入的原理

  • 核心是toString()
  • 獲取函數(shù)形參的方式

指令

  • 在 AngularJS 中將前綴為 ng- 這種屬性稱之為指令,其作用就是為 DOM 元素調(diào)用方法究履、定義行為綁定數(shù)據(jù)等

  • 簡單說:當一個 Angular 應(yīng)用啟動,Angular 就會遍歷 DOM 樹來解析 HTML藐俺,根據(jù)指令不同泥彤,完成不同操作

  • ng-bind

    • 用來解決表達式閃爍問題
    • <p ng-bind="數(shù)據(jù)模型"></p>
      注意:只能夠在雙標簽中使用ng-bind指令
  • ng-cloak

    • 用來解決表達式閃爍問題
    • <p class="ng-cloak">{{name}}</p>
    • 利用angular在加載會移除頁面上所以名為ng-cloak的樣式名的特性吟吝。
  • ngSanitize模塊
    npm install angular-sanitize

    • 使用的是ng-bind-html指令來渲染數(shù)據(jù)模型。
  • ng-repeat

    • 可以用來循環(huán)輸出數(shù)組

    • 寫在哪個元素上就是循環(huán)哪個元素浙宜。

    • 語法:類似于forin 循環(huán)

      <div ng-repeat="item in data ">{{item}}</div>
      + track by $index 解決數(shù)組中數(shù)據(jù)有重得的問題
      + <li ng-repeat="item in tesData track by $index"></li>

    • 還可以用來渲染key,value對

    • ng-repeat 在遍歷里會暴露一些數(shù)據(jù)模型,

      • $even:提供了一個布爾值,當為true時表示當前數(shù)據(jù)是第偶數(shù)條數(shù)據(jù),從索引0開始計算
      • $odd:提供了一個布爾值同仆,當為true時表示當前數(shù)據(jù)是第奇數(shù)條數(shù)據(jù),從索引0開始計算
      • $first,$last ,$middle
        ng-class:
    • 從多種樣式中選擇一個樣式

      • 語法:類似于從一個key,value對象中獲取其中一個屬性的值
      • ng-class="{'A':'red','B':'blue','C':'green'}"
    • 從多種樣式中選擇多個

      • 語法:也是寫一個key,value對象俗批,這里的key是我們提供的類樣式名市怎,value是一個布爾值,為true時對應(yīng)的key會被作為樣式名加入到class中

ng-hide/ng-show

  • ng-hide:需要一個布爾值:當為true時為隱藏當前元素
  • ng-show: 需要一個布爾值:當為true時為顯示當前元素

ng-if:需要一個布爾值:當為true時為顯示當前元素
為false時是刪除當前元素

ng-switch:與ng-switch-when同用臭觉,類似與js中的switch case

    <div ng-switch="name">
            <div ng-switch-when="小明">我是小明</div>
            <div ng-switch-when="小紅">我是小紅</div>
            <div ng-switch-when="小月">我是小月</div>
    </div>

其他常用指令

  • ng-checked:
    • 單選/復(fù)選是否選中,是單向數(shù)據(jù)綁定
  • ng-selected:
    • 是否選中
  • ng-disabled:
    • 是否禁用
  • ng-readonly:
    • 是否只讀

常用事件指令

不同于以上的功能性指令蝠筑,Angular還定義了一些用于和事件綁定的指令:

  • ng-blur:失去焦點
  • ng-focus:獲得焦點
  • ng-change:改變事件
  • ng-copy:復(fù)制事件
  • ng-click: ng-click="add()"
  • ng-dblclick:雙擊事件
  • ng-submit: 表單提交事件

指令的標準使用方式

data-xxx,在使用angular指令時揩懒,只需要在原先的指令前加上data-前綴。
x-

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末臣镣,一起剝皮案震驚了整個濱河市忆某,隨后出現(xiàn)的幾起案子阔蛉,更是在濱河造成了極大的恐慌,老刑警劉巖状原,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颠区,死亡現(xiàn)場離奇詭異,居然都是意外死亡器贩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門碗啄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稳摄,“玉大人,你說我怎么就攤上這事胆描。” “怎么了昌讲?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵短绸,是天一觀的道長筹裕。 經(jīng)常有香客問我,道長证逻,這世上最難降的妖魔是什么抗斤? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮龙宏,結(jié)果婚禮上负拟,老公的妹妹穿的比我還像新娘歹河。我一直安慰自己,他們只是感情好厨姚,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布谬墙。 她就那樣靜靜地躺著,像睡著了一般拭抬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上造虎,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天算凿,我揣著相機與錄音,去河邊找鬼婚夫。 笑死署鸡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的靴庆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼匣椰,長吁一口氣:“原來是場噩夢啊……” “哼禽笑!你這毒婦竟也來了蛤奥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤蟀伸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后啊掏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衰猛,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年娜睛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畦戒。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡障斋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出配喳,到底是詐尸還是另有隱情,我是刑警寧澤晴裹,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布涧团,位于F島的核電站,受9級特大地震影響钮追,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜元媚,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一苗沧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧甥角,春花似錦识樱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灶壶。三九已至杈曲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間担扑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工胚宦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留燕垃,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓您旁,卻偏偏與公主長得像轴捎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子侦锯,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容