2015-10-16 5 views
7

Я пытаюсь передать данные с моего узла-сервера с помощью ejs на свой угловой контроллер, чтобы я мог иметь его доступным, когда контроллер загружается (не интересуется угловым или пользовательским маршрутизатором, где вы можете решить).Получить данные EJS на угловом контроллере

сервер узла (с использованием экспресс):

app.get('/', function(req, res) { 
    res.render('index', { 
    names: ["Daniel", "Sarah", "Peter"] 
    }); 
}); 

Угловая контроллер:

.controller('NamesController', function ($scope) { 
    var info = <%= names %>; 
}); 

Делать это дает мне следующую ошибку: Uncaught SyntaxError: Unexpected token <

Если это не представляется возможным , Я хотел бы услышать предложения о том, как предварительно загрузить данные на моей странице.

ответ

8

я пройти строковую версию массива в - затем разобрать его на клиенте:

app.get('/', function(req, res) { 
    res.render('index', { 
     names: JSON.stringify(["Daniel", "Sarah", "Peter"]) 
    }); 
}); 

И не забудьте процитировать (Это предполагает ваш контроллер на странице EJS)!

.controller('NamesController', function ($scope) { 
    var info = JSON.parse('<%= names %>'); 
}); 

Если ваш контроллер находится в вашем собственном файле, вы можете использовать метод ngInit:

<div ng-init="init('<%= names %>')"></div> 

И разобрать:

$scope.init = function(stringifiedArray) { 
    var info = JSON.parse(stringifiedArray); 
} 
+0

Ницца. Я получил его для работы с ng-init, но мне любопытно узнать, почему я не могу заставить его работать другим способом. Контроллер загружается через ng-controller в родительский div моего файла ejs - который загруженные через ejs, включают в другой файл ejs. Мысли о том, почему это не сработает? –

+0

@ DanielFalabella - Итак, JavaScript внутри файла EJS, правильно? – tymeJV

+0

Да. Он внутри. –

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