2015-11-26 3 views
0

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

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

+0

Вы можете поставить массивы в службах, конечно. Вы также можете поместить их, скажем, в текстовый файл и при необходимости получить их с помощью ajax. – Arg0n

ответ

1

Просто уточнить @ ответ 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

+0

Как насчет Uint8Array? .. Мой массив на самом деле является двоичным файлом прошивки для встроенного устройства. Теперь это выглядит так: var firmware = new Uint8Array ([0x10, 0x20, 0x30 .........]). – Jolle

+0

Просто поставьте его вместо '[{name:" Item 1 "}, ...]' – Arg0n

+0

@Jolle Я обновил свой код, чтобы больше поместиться в вашу ситуацию. – Arg0n

3

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

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

Константа рецепт будет хорошим началом

myApp.constant('bigArray', myArray); 
+0

Хороший, не знал о 'constant' в Angular. – Arg0n

0

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

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

Может ли путь быть локальным? Я разрабатываю для Ionic App framework, и массивы должны быть локальными в приложении? – Jolle

+0

yes путь может быть локальным в любом месте вашего каталога – Himanshu

Смежные вопросы