2015-07-26 2 views
1

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

В моем контроллере я создал массив с именем names. Затем я хочу передать его в мою функцию $scope.message и вызвать ее из моего html.

Я получаю сообщение об ошибке:

"Error: [$interpolate:interr] Can't interpolate: 
     {{message(names)}} 
     {{}} 

мой контроллер:

eventsApp.controller("EventController", function EventController($scope) 
{ 

    var names = ["David", "Tony", "Tim", "David", "Daniel", "Tom"]; 

    var randomChoose = function(array){ 
     return Math.floor(Math.random() * array.length-1); 

    }; 
    $scope.message = function(array){ 
     var name = array.indexOf(randomChoose(array)); 
     return "Hello"+name; 
    }; 
}); 

Мой HTML:

<div class="container"> 
    <div ng-controller="EventController"> 
     {{message(names)}} 
     {{}} 
    </div> 

</div> 

Спасибо. Я попытался изменить names на $scope.names, но это, похоже, не сработало.

+1

Я думаю, что вы обязательно должны иметь имена в области для этой работы – lostintranslation

+0

Какова точка пустых фигурных скобок ('{{ }} ') в разметке? Кажется, это проблема. – GregL

+3

отлично работает здесь с настройками ... включая $ scope.names ... и правильный поиск массива http://plnkr.co/edit/kfajKG3QtsMzDIOahMQW?p=preview. Если вы использовали консоль для проверки значений в контроллере (базовая отладка), то выяснили бы больше: – charlietfl

ответ

1

Ваша хаотичность логика кажется неправильной, работающий example:

function EventController($scope) { 
    $scope.names = ["David", "Tony", "Tim", "David", "Daniel", "Tom"]; 

    var randomChoose = function(array){ 
     return array[Math.floor(Math.random() * array.length)]; 
    }; 

    $scope.message = function(array){ 
     var name = randomChoose(array); 
     return "Hello " + name; 
    }; 

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