Как ограничить неявное преобразование строк в nodejs - PullRequest
0 голосов
/ 23 мая 2018

У меня есть содержимое ниже в моем файле 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 голосов
/ 23 мая 2018

Использование JSON.stringify(cc, null, 2) помогло мне решить эту проблему.

0 голосов
/ 23 мая 2018

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 как переменную, но вам нужно отформатировать его в соответствии с вашими потребностями внутри цикла курса

0 голосов
/ 23 мая 2018

Использование 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>';
0 голосов
/ 23 мая 2018

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 (source)
<!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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...