Использование jsviews с длинами массивов

У меня есть эта модель:

var taskGroups = 
[
   {name:"Notepad", tasks:[]}
];

Моя цель — отобразить каждую группу задач в виде списка в следующем формате: {Name} {numOfTasks}

Если в группе задач есть пустая группа tasks[], она не должна отображаться.

Вот моя попытка в качестве jsfiddle: http://jsfiddle.net/ARS2E/

Вот мой шаблон:

<script id="tmpl" type="text/x-jsrender">
   {{if tasks.length}}
      <li class="tasklist-item">{{>name}} ({^{:tasks.length}})</li>
   {{/if}}
</script>

Вот мой javascript:

var taskGroups = [{name:"Notepad", tasks:[]}];
var lastID=0;

$.templates({ tasklistTemplate: "#tmpl" });
$.link.tasklistTemplate("#tasklist", taskGroups);

$("#btnAdd").on("click", function()
{
    $.observable(taskGroups[0].tasks).insert(0, {taskID:++lastID});
});
$("#btnRemove").on("click", function()
{
    if(taskGroups[0].tasks.length)
    {
        $.observable(taskGroups[0].tasks).remove(0, 1);
    }
});

Я не смог заставить это работать, и я не уверен, где я ошибаюсь. Буду очень признателен за любую помощь.


person CHS    schedule 19.02.2013    source источник


Ответы (1)


Две проблемы: First, {{if tasks.length}} не привязан к данным. Если вы напишете {^{if tasks.length}}, это будет связано с данными.

Во-вторых, в jsfiddle у вас был неправильный путь для jsrender.js - это не jquery.render.js.

person BorisMoore    schedule 19.02.2013