2013-08-16 68 views
0

我是Node.js和anguler.js的新手我想使用angular.js將JSON輸出顯示到網頁。 我angular.js代碼是在Node.js的文件從node.js文件運行angular.js

test.js

var pg = require('/data /node_modules/pg'); 
var serverAddress = localhost'; 
var serverPort = '1337'; 
var conString = "tcp://myuser:[email protected]/mydb"; 
var client = new pg.Client(conString); 
http = require('http'); 
fs = require('fs'); 
url = require('url'); 
path = require("path"); 
http.createServer(function (req, res) { 
console.log("request is--- "+ req.url);; 
res.writeHead(200,{"Content-type":"text/html"}); 
getData(res); 
}).listen(serverPort, serverAddress); 
function getData(res) 
{ 
client.connect(function(err) 
{ 
if(err){ 
    return console.error('could not connect to postgres', err);} 
client.query('select * from countrydata;', function(err, result){ 
    if(err){ 
    return console.error('error running query', err);} 
    res.write("<html ng-app>"); 
    res.write("<body> Keep it simple....!"); 
    res.write("<script>"); 
    res.write("alert('it work!');"); 
    res.write("</script>"); 
    res.write("<table ng-controller= countryController>"); 
    res.write("<td>{{directory}}</td>"); 
    res.write("</tr>"); 
    res.write("</table>"); 
    res.write("<script 
    src=\'https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js\'>"); 
    res.write("</script>"); 
    for (var i in result) 
    { 
    var records =result[i]; 
    if (i=='rows') 
    { 
     var json = JSON.stringify(result[i]); 
    } 
    } 
    res.write("<script>"); 
    res.write("angular.controller(countryController, function($scope) {"); 
    res.write("$scope.directory =" + json); 
    res.write("});"); 
    res.write("</script>"); 
    res.write("</body>"); 
    client.end(); 
    }); 

所以,當我運行這個test.js我的網頁看起來就像這樣 輸出: 保持簡單。 ...! {{$目錄}}

HTML視圖頁面的源代碼看起來名單this--

保持簡單....!{{目錄}} https://ajax.googleapis.com/ajax/libs /angularjs/1.0.1/angular.min.js>angular.controller(countryController,function($ scope){$ scope.directory = [{「country_name」:「USA」,「state」:「Alaska」},{ 「COUNTRY_NAME」: 「USA」, 「狀態」: 「科羅拉多」},{ 「COUNTRY_NAME」: 「USA」, 「狀態」: 「佛羅里達」},{ 「COUNTRY_NAME」: 「USA」, 「狀態」:「伊利諾伊「},{」country_name「:」美國「,」州「,」路易斯安那州「},{」country_name「:」美國「,」州「,」北卡羅來納州「},{」country_name「:」中國「狀態 「:」 上海 「},{」 COUNTRY_NAME 「:」 中國 「 」狀態「: 」北京「},{ 」COUNTRY_NAME「: 」意大利「, 」狀態「: 」翡冷翠「},{ 」COUNTRY_NAME「:」意大利」, 「狀態」: 「PISA」},{ 「COUNTRY_NAME」: 「印」, 「狀態」: 「ASSAM」}]});

我不知道爲什麼Controller沒有打印$ scope的值。請讓我知道我可以改正這一點。 感謝

+0

工作你不應該使用字符串連接發送的HTML內容。嘗試將您的HTML頁面作爲靜態文件進行服務。使用JSON將數據公開爲REST服務,然後使用'$ http'服務來加載數據。 –

回答

0

這裏的一些事情,我看到:

  • 你錯過了一個ng-app屬性實際上引導的角度應用
  • angular.controller()不是API的一部分。我認爲你正在嘗試使用Module.controller(),但是你必須首先引用一個可能創建的模塊angular.module()
  • 在你試圖定義控制器的內聯<script/>塊中,你應該使用字符串控制器名稱,例如'countryController'。你現在擁有的是一個未定義的變量......所以它將評估爲undefined
  • 此外,您需要在<table ng-controller="countryController">標記中使用一些引號(它們不在上面)。

洙...你有一些工作要做之前,你也會有這樣的小樣本:-)