Angular企業級開發 MVC之控制器詳解

2022-09-29 22:18:23 字數 2037 閱讀 3019

1.mvc中的控制器

angularjs的控制器主要為了把模型和檢視連線在一起。大多數業務邏輯操作都會放在檢視對應的控制器中。當然如果我們能夠把業務邏輯放到後端的rest服務中,就可以開發輕量級angularjs應用。

涉及到多個控制器中使用的業務邏輯,需要放到乙個公共的服務中,然後把改服務注入使用到該業務邏輯的控制器中。

2.理解控制器

在angularj程式設計客棧s的控制器中,建構函式會有$scope引數。當乙個控制器通過ng-controller指令連線到dom上,angular將例項化乙個新的控制器物件,然後呼叫指定的控制器的建構函式。乙個新的子作用範圍(scope)將被建立,並作為一種可注入的引數傳遞給控制器​​的建構函式為$scope。

如果控制器使用controller as語法附加到dom上,那麼控制器例項將被分配給新的$scope範圍。並且多了乙個和as同名的屬性,然後把自己指向這個屬性,就方便我們訪問了。

3.控制器的作用

3.1 在控制器中初始化模型(新增屬性)

建立控制器並將它附加到dom元素之後,angularjs會建立乙個子作用域。子作用域儲存著對應控制器的資料模型。子作用域可以通過$scope來獲取。

angularjs controller demo

} }

(function () ]);

})();

3.2 在控制器中附件行為(新增事件或方法)

附加行為的方式是把方法或事件新增到$scope物件上,以便在控制器對應的檢視中使用到改方法。也有很多方法是處理業務的,也是附加到$scope物件上。

ng-click對應的事件方法在controller裡面定義為additem,所以qorqbyryj在檢視上我們可以使用additem方法。

檢視上的ng-click、ng-model和ng-repeat都是angularjs的內建指令,後續部落格會詳細介紹。

4.控制器作用域

因為控制器是附加到dom元素上,所以存在著乙個檢視,有多個控制器。控制器之間可以是並列的,也可以是巢狀的形式存在。

4.1 檢視中控制器並列

各個控制器從附加dom元素節點開始,到節點對應閉合標籤結束的地方建立了乙個子控制域,單個控制器裡面的$scope物件只能訪問和呼叫該控制器範圍內的屬性和方法。

4.2 檢視中控制器巢狀

預設情況下,angularjs在當前作用域中無法找到某個屬性,就會在父級作用域中進行查詢。即子級控制器會繼承父級控制器中的物件。但是子級作用域和父級作用域中有相同的屬性,子級使用自己的作用域。這個時候子級作用域要訪問父級作用域的屬性可以通過$parent。類似j**ascript本身的原型鏈方式。

5.何為controlleras

angularjs提供$scope方式來處理controller。**如下:

hello }

var app = angular.module('myapp', );

app.controller('maincontroller', ['$scope',function($scope) ]);

angularjs處理controller提供一種作用域別名的方式,其實就是將model直接繫結controller的例項上。

**如下:

hello }

var app = angular.module('myapp', );

app.controller('maincontroller', function() );

使用這種方式處理controller有3個好處:

1 controller的定義不再依賴$scope,controller就是乙個普通的函式定義,這樣**於框架無關,假設哪天不使用angularjs框架,這裡的**可以進行復用和移植。

2 測試更友好,不需要開發者去模擬乙個$scope

3 增強**的可讀性。在控制器並行和巢狀的demo中,檢視上我們都使用花括號包含著name,username等屬性。如果有多個控制器並行,或者多個層級的巢狀,我們有時很難區分在檢視上使用時哪個控制器下的屬性,可以使用controlleras來避免這個問題。

本文標題: angular企業級開發——mvc之控制器詳解

本文位址:

Angular企業級開發 5 專案框架搭建

angularjs官方 提供了乙個angular phonecat專案,另外乙個就是angular seed專案。所以大多數團隊會基於angular seed專案來開發,本文首先分析angular seed專案的目錄結構。以及angularjs團隊為我們做了什麼事情,提供了我們真實開發最需要的框架結...

企業級開發從業感受

做企業級開發也有段時間了,基本上該了解的都了解了。做為乙個行業來說,這個行業的企業家不是很好過啊。不管哪個行業都在一步步的壓縮成本。而且還是發包方一廂情願式的,物價 專案的收入反而降低了。開發人員的收入就沒有以前那麼多了 另外,付款模式上面不管是 的二三三二式付款方式還是銀行的八二式付款方式,20 ...

OSGI 企業級開發系列

2 osgi 平台選型 目前我接觸到的是eclipse採用equinox 和 apache的felix 個人感覺felix更流行一些,參考的幾本書籍的 都是基於此平台的,加上眾多子專案 ipojo aries 貌似是不錯的選擇。equinox 平台有較多的中文參孝資料,osgi原理與最佳實踐 中的專...