Est-il possible d'écrire des données dans un fichier json local sans rien d'angulaire?

J'essaie d'écrire des données dans un fichier json après avoir appuyé sur "Soumettre" sur une forme formelle html en utilisant seulement un angle, mais rien ne se passe. Je sais que je peux lire un fichier json en utilisant angular mais pas sur la création de fichiers. OnSubmit () dans le contrôleur:

function onSubmit() { $scope.save = function() { $http.post('./temp/sample_data.json', JSON.stringify($scope.model)).then(function(data) { $scope.msg = 'Data saved'; }); }; }; 

Html:

 <form name="form" ng-submit="onSubmit()" novalidate> <formly-form model="model" fields="fields"></formly-form><br/> <button type="submit">Submit</button> </form> 

Le sample_data.json n'est pas créé et si je crée un fichier vide, il ne remplit pas non plus les données. Le modèle $ scope.del defenitly contient des données. Si quelqu'un peut aider, il sera très apprécié. Merci, Alon.

Est-il possible d'écrire des données dans un fichier json local sans rien d'angulaire?

Non. Même si vous exécutez la page à partir du système de fichiers local (par exemple, file://myfile.html ) ou à partir d'un serveur Web local (p. Ex. http://localhost/myfile.html ou http://host-on-my-intranet/myfile.html ), vous n'avez toujours aucun moyen d'écrire directement dans un fichier à partir du code JavaScript hébergé par le navigateur.

Deux choix:

  1. Envoyez-le à quelque chose (par exemple, un serveur) qui peut l'écrire ou

  2. Fournissez-le en tant que data: URI (si possible dans votre cas) que l'utilisateur peut cliquer avec le bouton droit de la souris et choisir "Enregistrer sous …"

    Voici comment vous créez une data: URI pour certains textes JSON:

     var uri = "data:application/json;charset=UTF-8," + encodeURIComponent(theJSON); 

Exemple complet de # 2:

 var theData = { foo: "bar" }; var theJSON = JSON.stringify(theData); var uri = "data:application/json;charset=UTF-8," + encodeURIComponent(theJSON); var a = document.createElement('a'); a.href = uri; a.innerHTML = "Right-click and choose 'save as...'"; document.body.appendChild(a); 

Non.

Coupe angulaire côté client.

Si vous souhaitez écrire des données sur le serveur (même sur le même ordinateur que le navigateur), vous avez besoin du code côté serveur pour le faire.

Vous ne pouvez pas accéder au système de fichiers local (directement) à partir de Javascript. Ceci est appliqué pour des raisons de sécurité (et est logique lorsque vous en pensez).

Accès aux fichiers locaux avec javascript

Comme cela n'est pas possible, vous pouvez essayer un autre itinéraire. Votre chemin de $ scope.save n'a pas été invoqué par la manière, seulement assigné.

 $scope.save = function() { localStorage.model = JSON.stringify($scope.model); }; function onSubmit() { $scope.save(); $scope.msg = 'saved'; }; 

Pour récupérer votre modèle, procédez comme suit:

 if (localStorage.model) $scope.model = JSON.parse(localStorage.model);