AngularJS:嵌套控制器和模型
问题描述:
我正在学习如何通过构建一个小应用来使用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
定义。其他控制器将具有不同名称的模型。
答
既然你有相关的数据是共享(或不是),并不断改变每10-60秒,我建议使用单一的服务。在该服务中,实例化您需要的与匹配的getter/setter相关的许多数据集。
服务保留数据,以便一个控制器修改服务中的数据,其他使用该服务的控制器也可以访问相同的更新数据。
模型中的共享数据是否经常变化? – Brant
您应该只需使用一种服务即可使用所有控制器,以便在控制器之间共享数据。 – Rob
@Brant最低嵌套控制器中的一些数据每10秒更改一次。祖父母控制器中的某些数据每60秒只更改一次,但这些数据不会共享。大部分不断变化的数据都在嵌套最低的孩子身上。 – UltraSonja