如何在nodejs中限制隐式字符串转换

时间:2018-05-23 07:21:02

标签: angularjs node.js

我的NodeJs文件中有以下内容。我想在哪里使用cc的值在HTML页面中使用。变量cont将保留HTML内容。

var cc=[{"keyword":"a","message":"y"}];    
var cont= '<!DOCTYPE html><html><body><div ng-app="myApp" ng-controller="reportCtrl"> <table><tr ng-repeat="x in names"><td>{{ x.keyword }}</td><td>{{ x.message }}</td></tr></table></div><script>var app = angular.module("myApp", []);app.controller("reportCtrl", function($scope) {$scope.names= '+  cc  +' ;});</script></body></html>';

并编写HTML文件

fs.writeFile('myPage.html', cont, (err) => {
          if (err) throw err;
          console.log('Saved!');
        });

当我打开HTML页面时,我发现cc的值是[Object Object][Object Object](Implicitly converted as string)

请建议一种将cc指定给$scope.names

的方法

4 个答案:

答案 0 :(得分:2)

cc是一个数组,所以如果你这样做

console.log(cc.keyword);

它将是未定义的,因为它是一个数组,其中一个对象不是一个对象本身,但如果你检查第一个这样的数组元素

console.log(cc[0]);

您将获得第一个数组元素中的对象。

{keyword: "a", message: "y"}

现在你可以做到

console.log(cc[0].keyword);

,结果将是

"a"

在你的情况下,你需要通过每个数组元素循环,像这样

var cc=[{"keyword":"a","message":"y"}];   
var outputString = '';

cc.map(function(item){ 
   outputString += item.keyword + item.message; 
});

现在使用outputString作为变量,但您需要在循环中将其格式化为您的需求

答案 1 :(得分:0)

test.js

const fs = require('fs');

var cc=JSON.stringify([{"keyword":"a","message":"y"}]);
var cont= '<!DOCTYPE html><html><body><div ng-app="myApp" ng-controller="reportCtrl"> <table><tr ng-repeat="x in names"><td>{{ x.keyword }}</td><td>{{ x.message }}</td></tr></table></div><script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.10/angular.min.js"></script><script>var app = angular.module("myApp", []);app.controller("reportCtrl", function($scope) {$scope.names= '+  cc  +' ;});</script></body></html>';

fs.writeFile('myPage.html', cont, (err) => {
    if (err) throw err;
    console.log('Saved!');
});   

输出:myPage.html(来源)
<!DOCTYPE html><html><body><div ng-app="myApp" ng-controller="reportCtrl"> <table><tr ng-repeat="x in names"><td>{{ x.keyword }}</td><td>{{ x.message }}</td></tr></table></div><script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.10/angular.min.js"></script><script>var app = angular.module("myApp", []);app.controller("reportCtrl", function($scope) {$scope.names= [{"keyword":"a","message":"y"}] ;});</script></body></html>

您似乎没有导入angular.js脚本。

答案 2 :(得分:0)

使用 JSON.stringify(cc [0],null,2)详细了解JSON https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

var cc=[{"keyword":"a","message":"y"}];    
var cont= '<!DOCTYPE html><html><body><div ng-app="myApp" ng-controller="reportCtrl"> <table><tr ng-repeat="x in names"><td>{{ x.keyword }}</td><td>{{ x.message }}</td></tr></table></div><script>var app = angular.module("myApp", []);app.controller("reportCtrl", function($scope) {$scope.names= '+  JSON.stringify(cc[0], null, 2) +' ;});</script></body></html>';

答案 3 :(得分:0)

使用JSON.stringify(cc, null, 2)帮我整理了这个问题。