2016-07-12 28 views
0

Ich habe ein JSON-Objekt, das ich benötige.In Javascript - Erstellen eines neuen Objekts

const tpl = require('../../../../assets/jsons/article-tpl.json');

dann, ich bin Iterieren durch ein Array, und ich möchte diese Aufgabe verwenden, um eine neue Vorlage bei jeder Iteration zu erzeugen, wie es in article-tpl.json definiert ist.

angular.forEach(content.posts, (val, key) => { 
     let _tpl = new Object(tpl); 
     // do some things with _tpl 
     // push _tpl to array to hold all the different tplts 
    } 
}); 

Dieser Code funktioniert nicht. Ich bekomme eine Reihe von identischen Vorlagen. Können Sie mir helfen herauszufinden, was das Problem ist? Danke.

+4

können Sie bitte etwas mehr Code hinzufügen oder einen Plunder bereitstellen? – varit05

+1

Versuchen Sie den folgenden Trick: 'Lassen Sie _tpl = JSON.parse (tpl);' –

+0

@AlexM gut, dass tatsächlich funktioniert. Ich habe '_tpl = JSON.parse (JSON.stringify (tpl));' weil es schon ein Objekt und keine Zeichenkette war. Benutztes lodash 'cloneDeep' schließlich. –

Antwort

0

require Anweisung ist nur für node.js, es gibt keine require in JavaScript/Angular.

Sie können einen JSON in Angular unter Verwendung der $http Anfrage (von lokal) anstelle von Ferndownload laden und es in Angular verwenden, wie Sie wünschen.

Beispiel:

var myObject = $http.get('myObject.json') 
       .then(
        function success(res) { 
        return res.data; 
        }, 
        function failed(err) { 
        console.log(err) 
        } 
       ); 

res.data ist ein Array, das Sie laufen kann alles, was Sie brauchen, und die Verwendung als Vorlage zu extrahieren.

Ich verwende so etwas, um CSV in JSON in this gist zu konvertieren.

+0

Sie können tatsächlich 'require' am Frontend mit browserify (http://browserify.org/) das Problem ist nicht –

+0

Ja, richtig. Ist 'neues Objekt' der beste Weg dafür? –

+0

Ich habe nicht erwähnt, dass ich Webpack benutze. Deshalb benötigt die –

0

lodash zur Rettung.

let _tpl = _.cloneDeep(tpl); löst es.

+1

Es ist immer besser, dem Code, den Sie als Antwort veröffentlichen, eine Erklärung hinzuzufügen, damit die Besucher verstehen, warum dies eine gute Antwort ist. – abarisone

Verwandte Themen