J'ai le contenu ci-dessous dans mon fichier NodeJs. Où je veux utiliser les valeurs de cc à utiliser dans la page HTML. La variable cont contiendra du contenu 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>';

Et écrire un fichier HTML

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

Quand j'ouvre la page HTML, je pourrais trouver que la valeur de cc est [Object Object][Object Object](Implicitly converted as string).

Veuillez suggérer un moyen d'attribuer un cc à $scope.names

0
Krishna Kanth Juluru 23 mai 2018 à 10:21

4 réponses

Meilleure réponse

Utilisez JSON.stringify (cc [0], null, 2) En savoir plus sur 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
Anusha kurra 23 mai 2018 à 08:49

L'utilisation de JSON.stringify(cc, null, 2) m'a aidé à résoudre ce problème.

0
Krishna Kanth Juluru 23 mai 2018 à 10:46

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!');
});   

Sortie: maPage.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>

Il semble que vous n'ayez pas importé de script angular.js.

0
Akshay Gohil 23 mai 2018 à 08:51

cc est un tableau donc si vous le faites

console.log(cc.keyword);

Il ne serait pas défini car il s'agit d'un tableau avec un objet à l'intérieur pas d'un objet lui-même, mais si vous vérifiez le premier élément du tableau comme ceci

console.log(cc[0]);

Vous obtiendrez l'objet dans le premier élément du tableau.

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

Maintenant tu peux faire

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

Et le résultat sera

"a"

Dans votre cas, vous devez parcourir chaque élément du tableau comme ceci

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

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

Utilisez maintenant outputString comme variable mais vous devez le formater selon vos besoins dans la boucle bien sûr

2
BraveButter 23 mai 2018 à 09:01