任务对象/Id
获取任务对象
使用 getTask() 方法获取任务对象。以下示例通过 id 获取任务:
const tasks = [
{ id: "1", text: "Task 1" },
{ id: "1.1", text: "Task 1.1", parent: "1" },
{ id: "1.2", text: "Task 1.2", parent: "1" },
];
const list = new ToDo("#root", { tasks });
list.getTask({ id: "1.2" }); // -> {id: '1.2', text: 'Task 1.2', parent: '1'}
检查任务是否存在
使用 existsTask() 方法检查任务是否存在。以下代码片段检查两个 id:
const tasks = [
{ id: "1", text: "Task 1" },
{ id: "1.1", text: "Task 1.1", parent: "1" },
{ id: "1.2", text: "Task 1.2", parent: "1" },
];
const list = new ToDo("#root", { tasks });
list.existsTask({ id: "2" }); // -> false
list.existsTask({ id: "1.2" }); // -> true
获取子任务 id
使用 getChildrenIds() 方法获取任务的子任务。以下示例返回某任务的所有后代:
const tasks = [
{ id: "1", text: "Task 1 #tag1" },
{ id: "1.1", text: "Task 1.1", parent: "1" },
{ id: "1.1.1", text: "Task 1.1.1 #tag1", parent: "1.1" },
{ id: "1.2", text: "Task 1.2", parent: "1" },
];
console.log(list.getChildrenIds({ id: "1" })); // ['1.1', '1.1.1', '1.2']
console.log(list.getChildrenIds({ id: "1", tree: false })); // ['1.1', '1.2']
筛选操作可能使某些任务在页面上不可见。filtered 参数决定隐藏任务是否出现在结果中。将其设为 true 可排除隐藏任务(默认值为 false)。以下代码片段展示了两种选项:
// filter the tasks
list.setFilter({ match: "#tag1", highlight: true });
// get children of the task after filtering
console.log(list.getChildrenIds({ id: "1", filtered: false })); // -> ['1.1', '1.1.1', '1.2']
// enable the "filtered" parameter
console.log(list.getChildrenIds({ id: "1", filtered: true })); // -> ['1.1', '1.1.1']
将 tree 设为 false 以仅返回第一级子任务:
console.log(list.getChildrenIds({ id: "1", filtered: true, tree: false })); // -> ['1.1']
console.log(list.getChildrenIds({ id: "1", filtered: false, tree: false })); // -> ['1.1', '1.2']
将 hideCompleted 设为 true 以排除已完成的子任务。以下示例以不同方式组合 filtered、tree 和 hideCompleted:
const tasks = [
{ id: "1", text: "Task 1 #tag1" },
{ id: "1.1", text: "Task 1.1", parent: "1" },
{ id: "1.1.1", text: "Task 1.1.1 #tag1", parent: "1.1", checked: true },
{ id: "1.2", text: "Task 1.2", parent: "1" },
];
// before filtering
console.log(list.getChildrenIds({ id: "1", tree: true, hideCompleted: false })); // -> ['1.1', '1.1.1', '1.2']
console.log(list.getChildrenIds({ id: "1", tree: true, hideCompleted: true })); // ['1.1', '1.2']
// filter the tasks
list.setFilter({ match: "#tag1", highlight: true });
// after filtering
console.log(list.getChildrenIds({ id: "1", filtered: true, tree: true, hideCompleted: false})); // -> ['1.1', '1.1.1']
console.log(list.getChildrenIds({ id: "1", filtered: true, tree: true, hideCompleted: true })); // -> ['1.1']
console.log(list.getChildrenIds({ id: "1", filtered: false, tree: true, hideCompleted: false})); // -> ['1.1', '1.1.1', '1.2']
console.log(list.getChildrenIds({ id: "1", filtered: false, tree: true, hideCompleted: true})); // -> ['1.1', '1.2']
检查任务是否有子任务
使用 hasChildren() 方法检查任务是否有子任务。以下代码片段验证某任务存在子任务:
const tasks = [
{ id: "1", text: "Task 1 #tag1 #tag3" },
{ id: "1.1", text: "Task 1.1", parent: "1" },
{ id: "1.1.1", text: "Task 1.1.1 #tag1", parent: "1.1" },
{ id: "1.2", text: "Task 1.2", parent: "1" },
];
// check whether the task has children (before filtering)
console.log(list.hasChildren({ id: "1.1" })); // -> true
筛选操作可能使某些任务在页面上不可见。filtered 参数决定被筛选(隐藏)的任务是否出现在结果中(默认 filtered: false,即显示;filtered: true 则不显示):
// filter the tasks
list.setFilter({ match: "#tag3", highlight: true });
// check whether the task has children (after filtering)
console.log(list.hasChildren({ id: "1.1" })); // -> true
console.log(list.hasChildren({ id: "1.1", filtered: true })); // -> false
将 hideCompleted 设为 true 以从结果中排除已完成的任务:
const tasks = [
{ id: "1", text: "Task 1 #tag1 #tag3" },
{ id: "1.1", text: "Task 1.1", parent: "1" },
{ id: "1.1.1", text: "Task 1.1.1 #tag1", parent: "1.1", checked: true },
{ id: "1.2", text: "Task 1.2", parent: "1" },
];
console.log(list.hasChildren({ id: "1.1" })); // -> true
console.log(list.hasChildren({ id: "1.1", hideCompleted: true })); // -> false
获取父任务 id
使用 getParentIds() 方法获取任务的父任务。以下示例返回某任务的完整父任务链:
const tasks = [
{ id: "1", text: "Task 1 #tag1" },
{ id: "1.1", text: "Task 1.1", parent: "1" },
{ id: "1.1.1", text: "Task 1.1.1", parent: "1.1" },
{ id: "1.2", text: "Task 1.2", parent: "1" },
];
const list = new ToDo("#root", { tasks });
console.log(list.getParentIds({ id: "1.1.1" })); // ['1.1', '1']
获取已选任务的 id
使用 getSelection() 方法获取当前所有已选任务的 id。以下代码片段初始化带有预选任务的 To Do List,并追加一个新的选中项:
const tasks = [
{ id: "1", text: "Task 1 #tag1" },
{ id: "1.1", text: "Task 1.1", parent: "1" },
{ id: "1.1.1", text: "Task 1.1.1", parent: "1.1" },
{ id: "1.2", text: "Task 1.2", parent: "1" },
];
const list = new ToDo("#root", {
tasks,
selected: ["1.1", "1.2"]
});
list.selectTask({
id: "1.1.1",
join: true
});
console.log(list.getSelection({ sorted: false })); // -> ["1.1", "1.2", "1.1.1"]