Вычисление Laravel 5.2 Vue.js не работает

Как я могу показать объекты, возвращаемые vue? С провинциями все в порядке, но с городами v-for не работает.

Это мой клинок:

<select v-model="ProvinceModel" name="province" id="province" class="border-radius-0 form-control padding-y-0">
    <option v-for="province in provinces" value="@{{ province.id }}"> @{{ province.name }} </option>
</select>

<select name="city" id="city" class="border-radius-0 form-control padding-y-0">
    <option v-for="city in cities" value="@{{ city.id }}"> @{{ city.name }} </option>
</select>

это мои скрипты

new Vue({
        el: '#vue',
        methods: {
            fetchProvinces: function () {
                this.$http.get('{{url('api/provinces')}}').then(function (provinces) {
                    this.$set('provinces', provinces.data)
                });
            }

        },
        computed: {
            cities() {
                this.$http.get("{{url('api/cities')}}/" + this.ProvinceModel).then(function (cities) {
                    console.log(cities.data);
                    this.$set('cities', cities.data)
                });

            }
        },
        ready: function () {
            this.fetchProvinces()
        },
    });

И маршрут

Route::get('cities/{provinces_id}', function ($id = 8) {
    return \App\province::find($id)->cities()->get();
})->where('id', '[0-9]+');

person Morteza Negahi    schedule 25.09.2016    source источник
comment
Насколько я могу судить по вашему вопросу, вы не используете select2 (select2.github.io). . Если да, обновите вопрос, чтобы отразить это.   -  person ceejayoz    schedule 25.09.2016
comment
@ceejayoz Мне просто нужно, чтобы моя проблема была решена, если вы можете помочь мне, мужчины.   -  person Morteza Negahi    schedule 25.09.2016
comment
Я пытаюсь помочь тебе. Прочитай мой ответ. Я дал вам необходимую информацию   -  person ceejayoz    schedule 25.09.2016


Ответы (2)


Вычисляемые функции должны что-то возвращать и синхронно. Вы ничего не возвращаете.

Вы также пытаетесь установить this.cities в качестве данных, но this.cities уже является вычисляемой функцией. Один переопределит другой и вызовет непоследовательное/запутанное поведение.

Асинхронная выборка городов должна быть методом, как и ваш метод fetchProvinces. Вы должны получать их при изменении ProvinceModel, что вы, вероятно, можете сделать с помощью события @change в селекторе или с помощью наблюдателя Vue для значения ProvinceModel.

Примечание. Как правило, лучше всего определять элементы данных в параметре data компонента. Если вы проверите консоль JS, Vue, скорее всего, выдаст предупреждение об этом.

person ceejayoz    schedule 25.09.2016
comment
Пожалуйста, прочтите это. Ссылка1 Ссылка2 Ссылка3 - person Morteza Negahi; 25.09.2016
comment
@MortezaNegahi Ни один из них не имеет отношения к вашей ситуации. - person ceejayoz; 25.09.2016
comment
Но в документе vue @change не существует! и vue автор сказал, что это событие возможно идет вниз! - person Morteza Negahi; 25.09.2016
comment
@MortezaNegahi Я считаю, что вы можете использовать v-on с change или использовать подход watch для наблюдения за ценностью провинции. Пожалуйста, прочитайте весь ответ. - person ceejayoz; 25.09.2016

Vuejs не гибкий, можно получить значение через jquery, передать в управление. Элемент по методу ref хорош.

Vuejs не может ждать рабочего, когда он занят, поэтому, естественно, переменная, когда она не имеет значения, показывает неопределенное значение.

person Muhamad Zolfaghari    schedule 25.09.2016
comment
Vuejs не гибкий Что? - person ceejayoz; 25.09.2016
comment
Прежде чем ставить отрицательную оценку, сначала узнайте, что написано! Когда Veujs для события chnage элемента не предвидел ничего не гибкого! Мы не работаем со статическими страницами. Наши страницы динамичны! - person Muhamad Zolfaghari; 25.09.2016
comment
@muhamadzolfaghari Мне все еще совершенно непонятно, что вы пытаетесь сказать. Vue.js очень гибок, и вполне возможно, что два поля выбора взаимодействуют друг с другом. То, что хочет сделать OP, полностью выполнимо в Vue — нет необходимости в jQuery. - person ceejayoz; 25.09.2016