2015-07-21 137 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相关的许多数据集。

服务保留数据,以便一个控制器修改服务中的数据,其他使用该服务的控制器也可以访问相同的更新数据。