2013-12-01 3 views
0

, если у вас есть массив элементов без свойств, как вы получаете доступ к значению внутри цикла for? В настоящее время я получаю правильное количество опций, но я не нашел правильного синтаксиса для получения значения параметра.Я пытаюсь построить параметры из значения данных массива, используя jsView

есть рабочий jsfiddle по адресу: http://jsfiddle.net/geewhizbang/Y44Gm/4/

var data = { 
    items: [{ 
     "title": "First Drop Down", 
      "hist": "Secondary", 
      "dec": "Priority", 
      "options": ["Priority", "Secondary"], 
      "type": "select" 
    }, { 
     "title": "Second Drop Down", 
      "hist": "Competitive Widget", 
      "dec": "Competitive Widget", 
      "options": ["Yadda", "Badda", "Bing", "Mobile", "Server", "Client", "Snickerdoodle"], 
      "type": "select" 
    }] 
}; 
$.views.converters("dateFormat", function (val) { 
    if (val == null) return ""; 
    var d = new Date(val); 
    if (d.getFullYear() == "1900") return ""; 
    return d.getMonth() + "/" + d.getDate() + "/" + d.getFullYear(); 
}); 
$template = $.templates("#template"); 
$("#container").html($template.render(data)); 

тело этого, в том числе шаблона:

<div id="container"> 
    <script id="template" type="text/x-jsrender"> 
    {{for items}} 
     <div class="bodyItem"> 
      <div class="colDec"> 
       <p>{{>title}}</p> 
       {{if type == "select"}} 
        <select data-link="{{>dec}}"> 
         {^{for options}} 
          <option value="{{#}}">{#}</option> 
         {{/for}} 
        </select> 
       {{else}} 
        {{if type == "date"}} 
         <input value="{{dateFormat:dec}}" class="date" /> 
        {{else}} 
         <div contentEditable="true">{{>dec}}</div> 
        {{/if}} 
       {{/if}} 
      </div> 
      <div class="colHist"> 
       <p>{{>title}}</p> 
       {{if type == "date"}} 
        <input value="{{dateFormat:dec}}" class="date" /> 
       {{else}} 
        <div>{{>dec}}</div> 
       {{/if}} 
      </div> 
     </div> 
    {{/for}} 
</script> 

ответ

0

Если опции является массивом строк, вам нужно:

<select data-link="dec"> 
    {^{for options}} 
     <option value="{{:#data}}">{{:#data}}</option> 
    {{/for}} 
</select> 

Обратите внимание также на выражение данных в элементе select.

В общем, в вашем jsfiddle вы можете использовать привязку данных гораздо больше. Например:

<div>{^{>dec}}</div> 

(Обратите внимание на ^)

И делать данных привязку, необходимо

$template.link("#container", data); 

, а не просто вызов визуализации ...

Есть несколько изменений необходимо, но вот обновление вашего jsfiddle, которое делает выбор привязки: http://jsfiddle.net/BorisMoore/Y44Gm/5/

+0

@GeeWhizBang: это работало для вас? – BorisMoore