2013-07-18 4 views
0

정상적인 경우 키를 통해 값을 얻습니다. 즉, < % = name %>를 사용하여 이름의 값을 얻으려면 키가 "name" . 제 질문은 json 필드의 키를 처음부터 알지 못하는 경우입니다. 예를 들어 모든 키 - 값 쌍을 테이블에 덤프하는 등 어떻게 반복 할 수 있습니까?백본/밑줄 템플릿에서 임의의 json을 반복합니다.

+0

을()' ] (http://underscorejs.org/#each). – gustavohenke

답변

5

키와 값이 속성 인 객체의 배열로 객체를 변형 할 수 있습니다. 예를 들어,

var obj = {one: 1, two: 2, three: 3}; 

var fields = _.map(
    _.pairs(obj), 
    function(pair) { 
     return { 
      key: pair[0], 
      value: pair[1] 
     }; 
    } 
); 

은 'http://jsfiddle.net/nikoshr/kvxuN/

+0

정말 고마워요! 일반적으로 나는 대답을 받아들이 기 전에 약간의 시간을 기다린다.하지만 이번에는 필요 없다. – spacemilkman

3

당신은 돈과 재생, [{key: "one", value: 1}, {key: "two", value: 2}, {key: "three", value: 3}]

당신은 다음 템플릿에이 배열을 공급할 수

var template = _.template(
    '<% _(list).each(function(field) { %>'+ 
     '<%= field.key %> : <%= field.value %><br>'+ 
    '<% }); %>' 
); 
$('body').append(template({ 
    list: fields 
})); 

그리고 바이올린 같은 것을 얻을 것이다 JSON 구조를 다시 빌드해야합니다.

당신은 몰라요

_.each(list,function(key,value,field){ 
key + ':' + value 

}) 
+1

감사합니다. 도움이되었습니다. 그러나, [당신은 핵심 및 가치 주장을 역전 시켰습니다] (http://underscorejs.org/#each). – Sara

0

을 감안할 때 JSON을 시도 Key 또는 {Bob : "01/01/2000", Jane : "10/10/2001"}Value 당신은 밑줄 템플릿을 사용하려면 :`[_.forEach를 사용

options = {Bob : "01/01/2000", Jane : "10/10/2001"} 


$.each(options, function (name, age) { 
    $("#target-div").append(_.template($("#template-name-age").html(), { Name : name, Age : age })) 
}) 


<script type="text/template" id="template-name-age"> 
    <div data-name="<%= Name %>" class="some-css-class"><%= Age %></div> 
</script> 
관련 문제