2015-06-25 2 views
0

Say У меня есть объект,Рулей каждый из обычая точки начала

 { 
     "empID": "1002729041", 
     "empName": "ABHIJIT AUDHYA" 
     }, 
     { 
     "empID": "1004563331", 
     "empName": "ABDUL MULLA" 
     }, 
     { 
     "empID": "1004703190", 
     "empName": "ABDUL RAZIC" 
     }, 
     { 
     "empID": "1004912437", 
     "empName": "ABDUL HAFEEZ" 
     } 

можно использовать рули перебрать весь объект с использованием,

{{#each myObj}} 
    <li>{{empName}}</li> 
{{/each}} 

Скажет, я хочу начать с 3-й объект, игнорируя 1-й и 2-й. Есть ли простой способ достичь этого?

+0

JSON массив в отсортированном порядке – PavanAsTechie

+0

Oh! Я забыл упомянуть, что это массив 'JSON'. Я не уверен, будет ли он в порядке сортировки. Я не думаю, что так будет. –

+0

http://jsfiddle.net/pavanastechie/L6798/6/ – PavanAsTechie

ответ

0

Нет, вам нужен помощник для этого: Logical operator in a handlebars.js {{#if}} conditional

Так что вы могли бы сделать что-то вроде if index > 2 then show content.

Если я могу спросить: почему бы не выбросить первые два (или в этом отношении: любые ненужные элементы) в фактический javascript перед тем, как вызвать шаблон?

Edit: здесь вы ...

Handlebars.registerHelper('eachFrom', function(context, count, options) { 
 
    var ret = ""; 
 
    
 
    context.slice(count).forEach(function(elem) { 
 
     ret += options.fn(elem); 
 
    }); 
 
    
 
    return ret; 
 
}); 
 

 
var context = { 
 
    myObj: [{ 
 
     "empID": "1002729041", 
 
      "empName": "ABHIJIT AUDHYA" 
 
    }, { 
 
     "empID": "1004563331", 
 
      "empName": "ABDUL MULLA" 
 
    }, { 
 
     "empID": "1004703190", 
 
      "empName": "ABDUL RAZIC" 
 
    }, { 
 
     "empID": "1004912437", 
 
      "empName": "ABDUL HAFEEZ" 
 
    }] 
 
}; 
 

 
var source = $("#entry-template").html(); 
 
var template = Handlebars.compile(source); 
 
$("#container").append(template(context));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="http://cdn.jsdelivr.net/handlebarsjs/3.0.3/handlebars.min.js"></script> 
 

 
<script id="entry-template" type="text/x-handlebars-template"> 
 
    <ul> 
 
     {{#eachFrom myObj 3}} 
 
      <li>{{empName}}</li> 
 
     {{/eachFrom}} 
 
    </ul> 
 
</script> 
 
<div id="container"></div>

+0

У меня есть десять элементов списка, из которых должно отображаться только два. У меня есть кнопка 'see more '. При нажатии 'see more', я должен отображать оставшиеся элементы списка в отдельном всплывающем окне. Я могу сделать это с помощью 'JS', но мне было любопытно узнать, возможно ли это в руле. Мне это показалось очень прямым. Грустно это не по умолчанию. Мне не нужно показывать это при условии if. Я спрашиваю, можно ли сразу отобразить его с третьего объекта без какого-либо блока? Есть ли помощник для этого? –

+0

Простой 'array.slice()' может решить это ... добавил его к моему ответу. – boast

+0

Это выглядит как более динамичное решение. Я принимаю это. Надеюсь, что это будет работать независимо от моих данных. –

Смежные вопросы