Частный канал не работает с Laravel-echo - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть следующие конечные точки:

Route::get('/tasks', function(){
    return Task::latest()->pluck('body');
});

Route::get('/projects/{project}', function(Project $project){
    $project->load('tasks');
    return view('projects.show', compact('project'));
});

Route::get('/api/projects/{project}', function(Project $project){
    return $project->tasks->pluck('body');
});

Route::post('/api/projects/{project}/tasks', function(Project $project){
    $task = $project->tasks()->create(request(['body']));
    TaskCreated::dispatch($task);
    return $task;
});

В моем представлении project.show я вызываю компонент. У меня есть два отдельных браузера, открытых с вошедшими пользователями.

Я хочу сохранить задачу для конкретного проекта, как только я нажму клавишу Tab, поэтому шаблон vue будет выглядеть так:

<ul>
    <li v-for="task in tasks" v-text="task"></li>
</ul>
<input type="text" v-model="newTask" @blur="addTask">

Мой скрипт выглядит так:

export default {
    data(){
        return {
            tasks: [],
            newTask: ''
        }
    },
    created() {
        axios.get('/tasks').then(response => (this.tasks = response.data));

        window.Echo.private('tasks. ' + this.project.id).listen('TaskCreated', e =>{
            this.tasks.push(e.task.body);
        });
    },
    methods: {

        addTask(){
            axios.post('/api/projects/${this.project.id}/tasks', {body: this.newTask})
            .then(response => response.data)
            .then(this.addTask);
        },
        show(){
            tasks.push(this.newTask);

            this.newTask = '';
        }
    }
}

Когда я ввожу задачу в chrome, я хочу немедленно просмотреть ее в другом браузере. В тот момент, когда я вхожу в задачу и нажимаю клавишу Tab, ничего не происходит.

Как я могу это исправить в моем шаблоне представления?

...