Vue реквизит с @emit - PullRequest
       40

Vue реквизит с @emit

0 голосов
/ 16 апреля 2020

Я не правильно использую пропеллер с @emit, но не знаю, как это исправить. Мне нужно знать неглобальный способ регистрации, чтобы сделать это правильно (я, кстати, совершенно новичок в Vue).

Вот мой html в файле parent.vue:

<deleteLayoutDialog v-if"showDeleteLayoutDialog"
    :layout-name="dialogNameToDelete
    @confirm="removeLayout(layout-name)"
    @cancel="setShowDeleteLayoutDialog(false)"/>

Вот файл child.vue, где определены реквизиты deleteLayoutDialog и @emit:

// html
// <script>
// import { //sth } from 'files'
// @Component({ // components })
export default class DeleteLayoutDialog extends Vue {
    @Prop({required: true, type: String})
    public readonly layoutName: string;

    @Emit()
    public confirm(layoutName: string) {
        // do something
    }
}
</script>

Здесь мой javascript (внутри parent.vue), где columnLayoutName, кажется, имеет значение NaN (в chrome dev tool)

public removeLayout(columnLayoutName: string) {
    if (this.columnLayout.name === columnLayoutName) {
        // (this.columnLayout is defined somewhere in this code)
        // do something...
    }
}

Как мне изменить мои html и removeLayout, чтобы я правильно использовал опору? Спасибо.

1 Ответ

0 голосов
/ 16 апреля 2020

Вы звоните removeLayout вместо передачи его в качестве аргумента.

@confirm="removeLayout(layout-name)"

Вы пытаетесь сделать вычитание между layout и name, которые, вероятно, не определены, поэтому вы получаете NaN.

Просто передайте ссылку

@confirm="removeLayout"
...