2015-12-09 38 views
2

我對Angular世界很陌生,我主要使用.NET MVC體系結構,在模型和控制器之間存在明確的劃分。爲什麼模型和控制器的概念混雜在Angular.JS中?

這是因爲在我看來,以下爲清楚:

  • 模型是數據的容器
  • 控制器基本上是其處理在客戶端
  • 業務和View之間的相互作用的功能集合

它們是兩個單獨的文件和兩個單獨的類型。沒有辦法,有人可以一個asp.net視圖和asp.net控制器之間的混淆

然而,在世界角度(這顯然是一個MVC架構),控制器看起來像在下面的鏈接中描述的東西:

https://scotch.io/tutorials/making-skinny-angularjs-controllers

對我來說,由.NET標準,這是模型和控制器的混合體,因爲它不僅承載數據(像模型)也承載功能**(就像控制器)**。不僅如此,模型實際上是Controller的一部分。

我的問題是,如果Angular中的模型看起來像上面鏈接中描述的模型,那麼模型本身是什麼樣的?

回答

3

型號

在AngularJS,術語模型是指存儲在域內使用內部視圖中使用的數據。它可以是硬編碼的值/對象或在範圍內存儲的服務調用上接收到的響應。

enter image description here

上述圖像給出的模型的使用方式上的視圖的清晰畫面。 AngularJS還支持雙向數據綁定。即更新視圖(其被綁定到特定模型)也更新模型值。

控制器

控制器的目的是,以暴露變量和功能表達和指令。

enter image description here

如上所示,一個控制器與範圍相關聯,並且內部範圍中定義的所有模型可以與相應控制器相關聯的視圖來訪問。控制器可用於定義業務邏輯和處理事件等。

0

範圍是Angular應用程序中非常重要的組件。範圍是表示應用程序「模型」的對象。它包含存儲通過模板呈現給用戶的數據的字段,以及當用戶執行諸如單擊按鈕之類的某些動作時可以調用的功能。 對於更多的Infor請到throgh鏈接 https://docs.angularjs.org/api/ng/directive/ngModel

3

有模型($範圍)之間的分離和視圖(HTML)。

是的,從視圖中調用$ scope的方法,但這些方法本質上是控制器操作 - 它們是從控制器函數的閉包中執行的。

app.controller('ctrl', function($scope) { 
     $scope.data = 'hello'; 
     $scope.onclick = function(arg) { 
      $scope.data = 'hello world!'; 
     } 
}); 

微軟ASPNET MVC是驚人地相似,角MVC:

MVC Controller = ngController 
ViewData/ViewBag = $scope 
Controller DI = Angular DI in controller function 
Razor View Engine = ngRepeat, ngShow, ngModel, etc 
RenderActions = Data-driven service-injected directives 
RenderPartials = Read-only directives (data retrieved by another controller) 
Click triggers controller action = ngClick triggers $scope handler in controller's function closure 
Model Data Binding = AngularJS Data Binding 
ModelState validation = ngModel validation 
HTTP handlers/modules = HTTP interceptors 

這讓我不知道如果ASPNET MVC啓發角...

注:的ViewData和$範圍是相似的,但當然,$ scopes通過$ scope繼承來解析$ scope屬性,但在ASPNET MVC中,子ViewData不會從父VIewData繼承。嗯......微軟,這將是一個非常有用的功能:)