2016-07-12 9 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에만 해당하며, JavaScript/Angular에는 require이 없습니다.

원격 다운로드 대신 $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

실제로 프론트 엔드에서 'require'를 browserify (http://browserify.org/)와 함께 사용하면 문제가 없습니다. –

+0

그래, 맞아. 'new Object'는 이것을위한 최선의 방법입니까? –

+0

webpack을 사용하고 있다고 언급하지 않았습니다. 그렇기 때문에 –

0

구조에 lodash.

let _tpl = _.cloneDeep(tpl);이 해결합니다.

+1

게시자가 답변으로 게시하는 코드에 설명을 추가하면 방문자가 왜 이것이 좋은 대답인지 이해하는 데 도움이됩니다. – abarisone

관련 문제