首頁  >  文章  >  web前端  >  angularjs學習筆記之三大模組(modal,controller,view)_AngularJS

angularjs學習筆記之三大模組(modal,controller,view)_AngularJS

WBOY
WBOY原創
2016-05-16 15:38:121136瀏覽

今天主要跟大家詳細講解一下angularjs的三大模組: modal,controller,view。

先跟大家說一下這三個模組之間的關係。

1.資料模型(modal)主要提供資料。它不會和視圖(view)直接操作。

2.controller保存modal提供的數據,與視圖進行操作。

3.view是視圖,也就是頁面展示。

4.總而言之,controller負責資料和視圖之間的通信,就是兩者的介面人。他們分工明確,實現了模組化。

一.如何使用資料模型(modal)?

   講到資料模型,我們再來看看上一節教學的範例:

<!DOCTYPE html>
 <html ng-app="app"> 
   <head>
   <meta charset="UTF-8">
   <title>Document</title>
     <script src="angular-1.2.19/angular.js"></script> <!-- 引入了AngularJS包 -->
     <script src="controll.js"></script> //引入控制器
   </head>
   <body>
     <div ng-controller="controller"> 
       <input type="text" ng-model="text">
       <b>{{greeting.text}} {{text}}</b>
     </div>
   </body>
 </html>

   1.先引入,angularjs包,啟動的時候先是去找ng-app指令,也就指定了整個的作用域;

   2.接著會繼續找到特定的指令,這裡會找到ng-model,定義了一個「text」的資料模型。

   3.下面使用了text的這個模型,所以實現了雙向綁定。 (只要在ng-app的作用域內,都能直接使用text)

二.如何使用控制器(controller)?

   先說一下使用控制器的幾個重點:

       1.不要檢視重複使用controller,一個控制器一般只負責一小塊視圖(一一對應);

       2.不要在controller中直接操作DOM,這不是控制器的職責,操作DOM要使用指令derective(見上節教學);

       3.不要在controller中進行資料過濾的操作,有專門的filter服務來實現這一塊;

       4.一般來說,不同的controller之間是不互相呼叫的,控制器的互動一般透過事件進行。

    接著我們來看上面程式碼藍色的部分,controll.js的內容是:

 function controller($scope){
   $scope.greeting = {
     text : 'hello'
   };
 }

    angularjs找到一個ng-controller的指令,然後會找到定義這個指令的地方,就是controll.js文件,然後可以使用greeting.text直接取得到他的值。

三.如何使用視圖(view)?

    說到如何使用視圖,就必須提到directive。 (這裡是新的知識了喲!!!!)

    以下來看一段程式碼:

var appModule = angular.module('app', []); //app是html中ng-app指令的名称

appModule.directive('hello', function() { //定义一个指令,名称叫hello
  return {
    restrict: 'E',
    template: '<div>Hi there</div>',
    replace: true
  };
});

   上面的程式碼定義了一個指令標籤,你可以直接在html中試試,看看會發生什麼事吧! ! !

   然後我再談解每個屬性的意義:

   1.restrict :(字串)可選參數,指明指令在DOM裡面以什麼形式被宣告。取值有:E(元素),A(屬性),C(類),M(註);上面的範例設定為元素形式();

   2.template: (字串或函數)可選參數,傳回的內容,上面的範例回傳的是一個div;

   3.templateUrl: 同上,透過url傳回內容,如果傳回內容很多,建議使用此屬性。

   4.relace:(布林值),預設值為false。上面的例子設為了true:頁面使用hello標籤後會被傳回的div取代。

   5.transclude:(布林值),設為true時。這個配置選項可以讓我們提取包含在指令那個元素裡面的內容,再將它放置在指令模板的特定位置,與ng-transclude合用。

   6.還有一些其他屬性,具體大家再慢慢了解吧。 。 。

OK,以上就是對這3個主要模組的使用說明了。希望對大家的學習有幫助啦。 。 。如果對於上面的筆記有不懂的地方,儘管問我,我一定會給大家解答的。祝大家生活愉快!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn