【问题标题】:Laravel 5.2 Vue.js computed doesn't workLaravel 5.2 Vue.js 计算不起作用
【发布时间】:2017-02-02 17:55:32
【问题描述】:

如何显示 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]+');

【问题讨论】:

  • 据我所知,您没有使用select2 (select2.github.io)。如果是,请更新问题以反映这一点。
  • @ceejayoz 我只需要解决我的问题,如果你能帮助我。
  • 我想帮助你。阅读我的答案。我已经给了你你需要的信息

标签: laravel laravel-5.2 laravel-5.1 vue.js vue-resource


【解决方案1】:

Vuejs不灵活,可以通过jquery获取value,传给control。引用元素的方法很好。

Vuejs不能等待worker,当它忙的时候,自然会在它不在值时显示未定义的变量。

【讨论】:

  • “Vuejs 不灵活”什么?
  • 在给出负面评价之前,先看看写的是什么!当 Veujs for chnage event of element 没有预料到任何不灵活的事情时!我们不使用静态页面。我们的页面动态!
  • @muhamadzolfaghari 我仍然完全不清楚你想说什么。 Vue.js 非常灵活,完全可以让两个选择框相互交互。 OP 想要做的事情在 Vue 中是完全可行的——不需要 jQuery。
【解决方案2】:

计算函数应该返回一些东西,并且是同步的。你没有返回任何东西。

您还尝试将this.cities 设置为数据,但this.cities 已经是一个计算函数。一个会覆盖另一个并导致不一致/令人困惑的行为。

异步获取城市应该是一种方法,就像您的fetchProvinces 方法一样。你应该在ProvinceModel 改变时获取它们,你可以通过选择器上的@change 事件或ProvinceModel 的值上的Vue 观察器来实现。

旁注:通常,最好在组件的data 参数中定义您的数据项。如果你检查你的 JS 控制台,Vue 很可能会发出警告。

【讨论】:

  • 请阅读这些。 Link1Link2Link3
  • @MortezaNegahi 这些都与您的情况无关。
  • 但是在 vue 文档中 @change 不存在!而vue作者说这个事件可能会down掉!
  • @MortezaNegahi 相信你可以使用v-onchange,或者使用watch的方式来观察该省的值。请阅读完整的答案。
猜你喜欢
  • 2016-04-05
  • 2017-05-22
  • 2016-04-01
  • 2017-01-26
  • 2016-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
相关资源
最近更新 更多