2016-07-12 10 views
0

私に必要なJSONオブジェクトがあります。javasccript - 新しいオブジェクトの作成

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

そして、私は、配列を反復処理していると私はそれがarticle-tpl.jsonで定義されているすべての繰り返しで、新しいテンプレートを作成するには、このオブジェクトを使用します。

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

このコードは機能しません。 私は同じテンプレートの配列を取得します。問題が何であるか把握するのを助けてくれますか?おかげさまで

+4

コードを追加したり、プランナーを提供したりできますか? – varit05

+1

次のトリックを試してください: 'let _tpl = JSON.parse(tpl);' –

+0

@AlexMうまくいきました。私は '_tpl = JSON.parse(JSON.stringify(tpl));'を使用しました。これはすでにオブジェクトであり、文字列ではなかったためです。最終的にlodash 'cloneDeep'を使用しました。 –

答えて

0

requireステートメントはnode.jsのみです。requireはJavaScript/Angularにありません。

リモートダウンロードではなく$httpリクエスト(ローカルから)を使用してAngularでJSONをロードし、あなたの望むようにAngularに使用できます。

例:

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

res.dataはあなたが必要なすべてを抽出し、テンプレートとして使用するために繰り返すことができます配列です。

私はこのようにCSVをJSON in this gistに変換しています。

+0

実際には、browserify(http://browserify.org/)でfrontendで 'require'を使用できますが、問題はありません。 –

+0

うん、そうです。これに対して、 'new Object'は最善の方法でしょうか? –

+0

私はwebpackを使用しているとは言及していませんでした。だから、 –

0

レスキューへのロダッシュ。

let _tpl = _.cloneDeep(tpl);が解決します。

+1

あなたが回答として投稿しているコードに説明を追加すると、訪問者がなぜこれが良い答えであるかを理解するのに役立ちます。 – abarisone

関連する問題