2015-07-21 343 views
0

我正在學習如何通過構建一個小應用來使用AngularJS。我對控制器和模型有點困惑。我有3個控制器,其中2個嵌套。AngularJS:嵌套控制器和模型

<div ng-controller="Controller1 as Ctrl1"> 
    <div ng-controller="Controller2 as Ctrl2"> 
     <div ng-controller="Controller3 as Ctrl3"> 
     </div> 
    </div> 
</div> 

我爲每個控制器使用不同的模型來顯示數據。所有數據都以某種方式相關,所以我想知道是否應該使用一個模型。如果是這樣,它應該定義在哪裏?

例如,一個控制器可能看起來像

(function() { 

    angular 
     .module('app') 
     .controller('Controller1', Controller1); 

    function Controller1() { 

     this.data = data; 
    } 

    var data = [  
     { 
      name: 'DATA 5', 
     }, 
     { 
      name: 'DATA 6', 
     }, 
     { 
      name: 'DATA 7', 
     } 
    ]; 
})(); 

其中該模型是data定義。其他控制器將具有不同名稱的模型。

+0

模型中的共享數據是否經常變化? – Brant

+0

您應該只需使用一種服務即可使用所有控制器,以便在控制器之間共享數據。 – Rob

+0

@Brant最低嵌套控制器中的一些數據每10秒更改一次。祖父母控制器中的某些數據每60秒只更改一次,但這些數據不會共享。大部分不斷變化的數據都在嵌套最低的孩子身上。 – UltraSonja

回答

1

既然你有相關的數據是共享(或不是),並不斷改變每10-60秒,我建議使用單一的服務。在該服務中,實例化您需要的與匹配的getter/setter相關的許多數據集。

服務保留數據,以便一個控制器修改服務中的數據,其他使用該服務的控制器也可以訪問相同的更新數據。