2015-05-20 3 views
0

У меня есть список, который я итерация через:Ractive.js продолжать и перерыв петли

<ul> 
    {{#list}} 
    <li>{{this.value}}</li> 
    {{/list}} 
</ul> 

Как бы продолжить цикл, если {{this.hidden}} верно?

Я хотел бы сделать что-то вроде этого:

{[#if this.hidden]} {[continue]} {[/if]} 

Возможно ли это с RactiveJS?

ответ

1

Я не верю, что в Ractive усах, по крайней мере, согласно их документам, есть break или continue (или что-то подобное). Тем не менее, вы все равно можете добиться такого же эффекта.

Вместо continue, основанный на некотором состоянии, просто обрабатывайте противоположное состояние.

{[#if !this.hidden]} {[do whatever...]} {[/if]} 

Вместо того, чтобы break Инг петлю, фильтровать массив до связывания.

var listModified = []; 
for (var i=0; i < ractive.get("list").length; i++) { 
    if (/* some condition */) 
     break; 
    listModified.push(ractive.get("list")[i]); 
} 
1

Вы можете создать вычисляемое свойство, которое возвращает массив, который опускает скрытые. Если предположить, что список является списком объектов:

Добавьте это в конфигурации:

computed: { 
    listWithoutHidden: function(){ 
    return this.get('list').filter(function(item){ 
     return !item.hidden; 
    }); 
    } 
} 

и обновить шаблон

<ul> 
    {{#listWithoutHidden}} 
    <li>{{this.value}}</li> 
    {{/list}} 
</ul> 
+0

Этот ответ правильный способ мышления. Вам необходимо сделать свою логику в своих данных ** перед тем, как отправить ее на усы. –

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