Vue: [Vue ๊ฒฝ๊ณ ]: ์†์„ฑ ๋˜๋Š” ๋ฉ”์„œ๋“œ "์ธ๋ฑ์Šค"๊ฐ€ ์ธ์Šคํ„ด์Šค์— ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ ๋ Œ๋”๋ง ์ค‘์— ์ฐธ์กฐ๋ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 09์›” 27์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: vuejs/vue

Vue.js ๋ฒ„์ „

2.0.0-rc.7

์‹ค์ œ๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

1.x vue ํ”„๋กœ์ ํŠธ๋ฅผ 2.0.0์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ ๊ฒฝ๊ณ ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

main.js:20715 [Vue ๊ฒฝ๊ณ ]: "์ธ๋ฑ์Šค" ์†์„ฑ ๋˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์ธ์Šคํ„ด์Šค์— ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ ๋ Œ๋”๋ง ์ค‘์— ์ฐธ์กฐ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์˜ต์…˜์—์„œ ๋ฐ˜์‘ํ˜• ๋ฐ์ดํ„ฐ ์†์„ฑ์„ ์„ ์–ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๋ฐœ๊ฒฌ)

์•”ํ˜ธ:

<template>
<div>
...
<a class="ui red label " v-for="(tag,index) in tags">
       {{tag}}
       <i class="delete icon" v-on:click="deleteTag(index)"></i>
 </a>
...
</div>
<template>
<script>

    module.exports = {
        data : function () {
            return {
                //form tags
                tags:[],
            }
        },
        methods : {

            deleteTag : function (deleteIndex) {
                this.tags.splice(deleteIndex,1);
            }
        }

    }

</script>

์ด ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

need repro

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋งˆ์นจ๋‚ด ๋ฌธ์ œ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์›๋ž˜ ์ฝ”๋“œ๋ฅผ ๋‹ค์Œ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค.

(ํƒญ, ์ธ๋ฑ์Šค)

๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ

๊ฒฝ๊ณ ํ•˜๋‹ค:

<a class="item" v-for="tab in tabs" :class="{active : activeTab==index}" @click="toggleActiveTab(index)">
            {{tab.name}}
        </a>

๊ฒฝ๊ณ  ์—†์Œ:

<a class="item" v-for="(tab,index) in tabs" :class="{active : activeTab==index}" @click="toggleActiveTab(index)">
            {{tab.name}}
        </a>

๋ชจ๋“  3 ๋Œ“๊ธ€

๋งˆ์นจ๋‚ด ๋ฌธ์ œ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์›๋ž˜ ์ฝ”๋“œ๋ฅผ ๋‹ค์Œ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค.

(ํƒญ, ์ธ๋ฑ์Šค)

๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ

๊ฒฝ๊ณ ํ•˜๋‹ค:

<a class="item" v-for="tab in tabs" :class="{active : activeTab==index}" @click="toggleActiveTab(index)">
            {{tab.name}}
        </a>

๊ฒฝ๊ณ  ์—†์Œ:

<a class="item" v-for="(tab,index) in tabs" :class="{active : activeTab==index}" @click="toggleActiveTab(index)">
            {{tab.name}}
        </a>

๋จผ์ € ์ด ๊ธ€์„ ์˜ฌ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค๋งŒ ์ €๋„ ๋น„์Šทํ•œ ์ƒํ™ฉ์„ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค..

Vue.js ๋ฒ„์ „
2.1.6

Vuex.js ๋ฒ„์ „
2.1.1

๋‚ด ํŒŒ์ผ actions.js

 ๋‚ด๋ณด๋‚ด๊ธฐ const addForm = ({ ๋””์ŠคํŒจ์น˜ }) => {
 ๋””์ŠคํŒจ์น˜('ADD_FORM')
 }

 ๋‚ด๋ณด๋‚ด๊ธฐ const deleteForm = ({ ๋””์ŠคํŒจ์น˜ }) => {
 ๋””์ŠคํŒจ์น˜('DELETE_FORM')
 }

๊ทธ๋ฆฌ๊ณ  ๋‚ด component.vue

 <ํ…œํ”Œ๋ฆฟ>
 < ul class="๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด">
 <๋ฆฌ>
 < a @click="addForm"> ์ €์žฅ</a> 
 < /๋ฆฌ>
 <๋ฆฌ>
 < a @click="deleteForm"> ์‚ญ์ œ</a>
 < /๋ฆฌ>
 < /ul>
 < /ํ…œํ”Œ๋ฆฟ>

์ด๊ฒƒ์€ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค

vue.common.js?e881:519[Vue warn]: "addForm" ์†์„ฑ ๋˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์ธ์Šคํ„ด์Šค์— ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ ๋ Œ๋”๋ง ์ค‘์— ์ฐธ์กฐ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์˜ต์…˜์—์„œ ๋ฐ˜์‘ํ˜• ๋ฐ์ดํ„ฐ ์†์„ฑ์„ ์„ ์–ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
vue.common.js?e881:519 [Vue ๊ฒฝ๊ณ ]: "deleteForm" ์†์„ฑ ๋˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์ธ์Šคํ„ด์Šค์— ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ ๋ Œ๋”๋ง ์ค‘์— ์ฐธ์กฐ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์˜ต์…˜์—์„œ ๋ฐ˜์‘ํ˜• ๋ฐ์ดํ„ฐ ์†์„ฑ์„ ์„ ์–ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฒฝ๊ณ ๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

@carvalhoviniciusluiz ๊ตฌ์„ฑ ์š”์†Œ์— actions ๋ฅผ ์ •์˜ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. http://vuex.vuejs.org/en/actions.html#dispatching -actions-in-components๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰