您可以创建一个工厂,该工厂可以传递给每个指令或控制器。这样可以确保在任何给定时间只有一个数组实例。编辑:这里唯一的陷阱是确保您在指令作用域上设置引用类型,而不是原始类型,否则最终将在每个作用域中复制值。
这是Plnkr.co上的示例
app.controller('MainCtrl', function($scope, dataService) { $scope.name = 'World'; //set up the items. angular.copy([ { name: 'test'} , { name: 'foo' } ], dataService.items);});app.directive('dir1', function(dataService){ return { restrict: 'E', template: '<h3>Directive 1</h3>' + '<div ng-repeat="item in data.items">' + '<input type="text" ng-model="item.name"/>' + '</div>', link: function(scope, elem, attr) { scope.data = dataService; } };});app.directive('dir2', function(dataService){ return { restrict: 'E', template: '<h3>Directive 2</h3>' + '<div ng-repeat="item in data.items">' + '<input type="text" ng-model="item.name"/>' + '</div>', link: function(scope, elem, attr) { scope.data = dataService; } };});app.directive('dir3', function(dataService){ return { restrict: 'E', template: '<h3>Directive 3</h3>' + '<div ng-repeat="item in data.items">' + '<input type="text" ng-model="item.name"/>' + '</div>', link: function(scope, elem, attr) { scope.data = dataService; } };});app.factory('dataService', [function(){ return { items: [] };}]);HTML
<dir1></dir1> <dir2></dir2> <dir3></dir3>



