AngularJS 如何从其他文件中包含数组?

AngularJS how to include array from other file?

我在控制器中定义了一些相当大的二进制 (200kb) 数组。现在我想将这些大数组放在单独的文件中,并以某种方式将它们包含在我的控制器中或将它们保存在我的控制器中。

有没有一种优雅的方法可以做到这一点? 我可以将数组放在不同的服务中,然后从服务中获取数组吗?

您可以选择一种提供程序配方将数组注入控制器、服务或指令。

https://docs.angularjs.org/guide/providers

不变的食谱将是一个好的开始

myApp.constant('bigArray', myArray);

您可以将您的阵列分类在不同的服务文件中,并将这些服务注入您的控制器以获取这些阵列,然后可以在控制器文件中管理您的数据。您还可以将这些数组保存在简单的 json 文件中,并发出 http get 请求以获取该数据,例如

$http.get('/path to your file')
 .success(function(data){
    //logic
    })
 .error(function(data){
            //capture error
});

只是为了详细说明@hansmaad 的回答并提供 demo

HTML

<div ng-app="myApp" ng-controller="myController">
    <div ng-repeat="item in bigArray">
        <h1>{{item.name}}</h1>
    </div>
</div>

JavaScript

var app = angular.module("myApp", []);

//In another file
app.constant("BigArray", [
    {
        name: "Item 1"
    },
    {
        name: "Item 2"
    },
    {
        name: "Item 3"
    }
]);
//In another file end

app.controller("myController", ["$scope", "BigArray", function($scope, BigArray){
    $scope.bigArray = BigArray; 
}]);

更新

HTML

<div ng-app="myApp" ng-controller="myController">
    <div ng-repeat="item in bigArray">
        <h1>{{item}}</h1>
    </div>
</div>

JavaScript

var app = angular.module("myApp", []);

//In another file
app.constant("BigArray", new Uint8Array([0x10, 0x20, 0x30]));
//In another file end

app.controller("myController", ["$scope", "BigArray", function($scope, BigArray){
    $scope.bigArray = BigArray; 
}]);

已更新JSFiddle