AngularJS, как включить массив из другого файла?

0

У меня есть довольно большие двоичные (200kb) массивы, определенные внутри контроллера. Теперь я хочу поместить эти большие массивы в отдельные файлы и как-то включить их или заполучить их в своем контроллере.

Есть ли элегантный способ сделать это? Могу ли я разместить массивы в разных службах, а затем получить массивы из служб?

  • 0
    Вы можете поместить массивы в службы, конечно. Вы также можете поместить их, скажем, в текстовый файл и при необходимости получить их с помощью ajax.
Теги:
arrays
angularjs-ng-include

3 ответа

1
Лучший ответ

Просто чтобы уточнить на @hansmaad ответ и предоставить демонстрационную версию

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

  • 0
    Как насчет Uint8Array? .. Мой массив на самом деле является двоичным файлом прошивки для встроенного устройства. Теперь это выглядит так: var firmware = new Uint8Array ([0x10, 0x20, 0x30 .........]).
  • 0
    Просто поместите его вместо [{ name: "Item 1" },...]
Показать ещё 1 комментарий
3

Вы можете выбрать один из рецептов поставщика, чтобы ввести массив в контроллеры, службы или директивы.

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

Постоянный рецепт был бы хорошим началом

myApp.constant('bigArray', myArray);
  • 0
    Хороший, не знал о constant в Angular.
0

Вы можете классифицировать свои массивы в разных служебных файлах и внедрять эти службы в свой контроллер, чтобы получить эти массивы, а затем управлять своими данными в файле контроллера. Вы также можете сохранить эти массивы в простых json файлах и сделать запрос HTTP-get, чтобы получить такие данные, как

$http.get('/path to your file')
 .success(function(data){
    //logic
    })
 .error(function(data){
            //capture error
});
  • 0
    Может ли путь быть локальным? Я разрабатываю для платформы Ionic App, и массивы должны быть локальными в приложении?
  • 0
    да путь может быть локальным в любом месте вашего каталога

Ещё вопросы

Сообщество Overcoder
Наверх
Меню