2015-10-16 19 views
7

Tôi đang cố truyền dữ liệu từ máy chủ nút bằng cách sử dụng bộ điều khiển góc để tôi có thể có sẵn khi bộ điều khiển tải (không quan tâm đến bộ định tuyến góc hoặc giao diện người dùng nơi bạn có thể giải quyết).Nhận dữ liệu EJS trên bộ điều khiển góc

Node máy chủ (sử dụng nhanh):

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

điều khiển góc:

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

Việc làm này mang lại cho tôi những lỗi sau đây: Uncaught SyntaxError: Unexpected token <

Nếu đây là không thể , Tôi rất muốn nghe đề xuất về cách tải trước dữ liệu trên trang của tôi.

Trả lời

8

Tôi muốn vượt qua một phiên bản chuyển đổi thành chuỗi của mảng trong - sau đó phân tích nó ra trên máy khách:

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

Và hãy nhớ trích dẫn nó (Điều này giả định điều khiển của bạn là trong trang EJS của bạn)!

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

Nếu điều khiển của bạn là trong tập tin riêng của bạn, bạn có thể sử dụng một phương pháp ngInit:

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

Và phân tích:

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

Nice. Tôi đã nhận nó để làm việc với ng-init, nhưng tôi tò mò muốn xem lý do tại sao tôi không thể làm cho nó hoạt động theo cách khác. Bộ điều khiển được tải thông qua ng-controller trên div cha của tập tin ejs của tôi - đó là tải thông qua một ejs bao gồm trên một tập tin ejs. Suy nghĩ về lý do tại sao điều đó sẽ không hoạt động? –

+0

@DanielFalabella - Vì vậy, JavaScript nằm bên trong tệp EJS, phải không? – tymeJV

+0

Vâng. Nó nằm bên trong. –

Các vấn đề liên quan