2015-07-15 6 views
0

У меня есть массив Javascript, который содержит значения. Я хочу, чтобы этот массив был источником, который Angular считывает для обновления пользовательского интерфейса. Но как мне получить доступ к нему из Angular?AngularJS - Как получить доступ к массиву Javascript?

Как:

<script> 
var myArr = ["apple", "banana", "cherry"]; 
/** 
* then all Angular stuffs here... 
*/ 
</script> 

<div ng-controller="myController"> 
    <ul> 
     <li ng-repeat="i in what?"> 
      {{ i }} 
     </li> 
    </ul> 
</div> 

Конечно я могу построить массив в угловой области. Но в любом случае, как мне получить доступ к Javascript Array?

+0

возможный дубликат [Call Global Variable in Angular Expression] (http://stackoverflow.com/questions/12749034/call-global-variable-in-angular-expression) –

ответ

2

У меня есть массив Javascript, который содержит значения. Я хочу, чтобы этот массив был источником, который Angular считывает для обновления пользовательского интерфейса.

Ну, вы не можете не должны. Вы должны переместить это в своем контроллере angularjs. Это потому, что все, что вы пишете в теге <script>, было бы вне контекста углового.

Просто переместите массив контроллер

myApp.controller('myController', function($scope) { 
    $scope.myArr = ["apple", "banana", "cherry"]; 
}); 

UPDATE: [После обсуждения с @Cerbrus в комментариях ниже]

Как ответил @deceze и @Amir, его выполнимо путем инъекций $window сервис в контроллере и создание аналогичного массива в контекст угловой. Кроме того, только потому, что что-то выполнимо, это не значит, что вы должны пойти на это.

function($scope, $window) { 
    $scope.myArr = $window.myArr; 
} 
+2

Вы _ [можете] (http: // stackoverflow .com/a/31428312/1835379) ._ – Cerbrus

+0

@Cerbrus. Бад, вы видели код OP? у него был только скриптовый тег, он не настраивал никаких угловых основ. поэтому я объяснил, что вы не можете. Это не правильно? –

+0

@RameshRajendran: Он говорит, что OP не может использовать тот массив, который у него уже есть. Это просто неверно, что используется конкретный массив _can_. – Cerbrus

2

Предполагая вар на окне (если есть из внешнего источника), вы можете вводить $window к контроллеру и принести его.

// Контроллер

function($scope, $window) { 
    $scope.myArr = $window.myArr; 
} 

// Вид:

<div ng-controller="myController"> 
    <ul> 
     <li ng-repeat="i in myArr"> 
      {{ i }} 
     </li> 
    </ul> 
</div> 

JSFIDDLE.

2

Вам необходимо установить переменную на $scope на соответствующий контроллер. Если массив происходит от «снаружи» Угловое, просто сделать это:

myApp.controller('myController', function ($scope, $window) { 
    $scope.myArr = $window.myArr; 
}); 

Теперь myArr доступен в шаблоне.

1

Да, вы можете это сделать.

Но если вы хотите сделать это, вам нужно настроить много вещей ...

.... Позвони угловые сценарии

..... характеристики маршрута

..... узнал о архитектуре MVC с использованием угловых.JS

..... А угловые переменные

Так узнавайте here

Читать эту article

+1

Вы _ [можете] (http://stackoverflow.com/a/31428312/1835379) ._ – Cerbrus

+1

@Cerbrus. Бад, вы видели код OP? у него был только скриптовый тег, он не настраивал никаких угловых основ. поэтому я объяснил, что вы не можете. Это не правильно? –

+1

Вы говорите, что OP не может использовать тот массив, который у него уже есть. Это просто неверно, что используется конкретный массив _can_. – Cerbrus

1

Вы должны установить myArr до $ объема вместо var myArr.

Заменить var myArr на $scope.myArr и поместите его в контроллер. Простой, так как это

+2

Без контроллера это не сработает. – Cerbrus

+0

Конечно. Вам нужен контролер – forgottofly

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