Skip to content

Guide > List Rendering の翻訳を追従 #275

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Apr 24, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions src/guide/list.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ example1.items = example1.items.filter(item => item.message.match(/Foo/))
例えば:

```html
<li v-for="n in evenNumbers">{{ n }}</li>
<li v-for="n in evenNumbers" :key="n">{{ n }}</li>
```

```js
Expand All @@ -188,7 +188,7 @@ computed: {

```html
<ul v-for="numbers in sets">
<li v-for="n in even(numbers)">{{ n }}</li>
<li v-for="n in even(numbers)" :key="n">{{ n }}</li>
</ul>
```

Expand All @@ -211,7 +211,7 @@ methods: {

```html
<div id="range" class="demo">
<span v-for="n in 10">{{ n }} </span>
<span v-for="n in 10" :key="n">{{ n }} </span>
</div>
```

Expand All @@ -225,7 +225,7 @@ methods: {

```html
<ul>
<template v-for="item in items">
<template v-for="item in items" :key="item.msg">
<li>{{ item.msg }}</li>
<li class="divider" role="presentation"></li>
</template>
Expand All @@ -238,25 +238,24 @@ methods: {
`v-if` と `v-for` を同時に利用することは**推奨されません**。 詳細については [スタイルガイド](../style-guide/#avoid-v-if-with-v-for-essential) を参照ください。
:::

それらが同じノードに存在するとき、 `v-for` は `v-if` よりも高い優先度を持ちます。これは `v-if` がループの各繰り返しで実行されることを意味します。以下のように、これはいくつかの項目のみのノードを描画する場合に便利です。
それらが同じノードに存在するとき、 `v-if` は `v-for` よりも高い優先度を持ちます。つまり `v-if` の条件は、 `v-for` のスコープの変数にはアクセスできないということです:

```html
<!-- インスタンスに "todo" プロパティが定義されていないため、エラーが発生します。 -->

<li v-for="todo in todos" v-if="!todo.isComplete">
{{ todo }}
{{ todo.name }}
</li>
```

上記は、完了していない項目だけを描画します。

代わりに、ループの実行を条件付きでスキップすることを目的にしている場合は、ラッパー要素 (または [`<template>`](conditional#conditional-groups-with-v-if-on-lt-template-gt))上に `v-if` を配置できます。例えば:
これは `v-for` を `<template>` タグで囲み、移動させることで修正できます:

```html
<ul v-if="todos.length">
<li v-for="todo in todos">
{{ todo }}
<template v-for="todo in todos" :key="todo.name">
<li v-if="!todo.isComplete">
{{ todo.name }}
</li>
</ul>
<p v-else>No todos left!</p>
</template>
```

## コンポーネントと `v-for`
Expand Down Expand Up @@ -346,7 +345,8 @@ app.component('todo-item', {
<button @click="$emit('remove')">Remove</button>
</li>
`,
props: ['title']
props: ['title'],
emits: ['remove']
})

app.mount('#todo-list-example')
Expand Down