如何在多个 angular 1.5 控制器中重用硬编码数据数组?

How can I reuse a hardcoded array of data in multiple angular 1.5 controllers?

我有两个 angular 控制器都有这个:

var 数据 = ['one', 'two', 'three', 'four'];

我怎样才能将它放在一个地方而不是两个地方并在每个控制器中重复使用它?

您可以创建一个包含returns数组

方法的服务
app.service('myService', function() {
    var data = ['one', 'two', 'three', 'four'];

    this.getData= function () {
        return data;
    }
});

并在你的控制器中调用它

app.controller('myCtrl', function($scope, myService) {
    $scope.data = myService.getData();
});

这个数组是简单的模型数据表示,你应该把它放到服务中(服务是单例的,在每个控制器中你都可以访问同一个数组)。

简单示例:

app.factory('myArray', 
  function() {
    this.array = ['one', 'two', 'three', 'four'];
    return this.array;
  });

在每个控制器中您可以访问这个数组:

app.controller('myCtrl', function($scope, myArray) {
    $scope.array = myArray;
});

Plunker 示例可用https://plnkr.co/edit/m307rP4IjcXSJpPWmHeA?p=info

正确的方法是使用 valueconstant providers,它们就是为此而设计的。然后你可以在你拥有的任何其他提供者声明中注入它(即 directivecomponentcontroller 等)。

myApp.value('MyData', ['one', 'two', 'three', 'four']);

myApp.controller('myController', function (MyData) {
    var $ctrl = this;

    $ctrl.data = MyData;
});