【问题标题】:Vue Data not getting updatedVue 数据未更新
【发布时间】:2017-08-09 15:32:29
【问题描述】:

我在我的 vue 应用程序的挂载钩子上有以下内容。

let vm = this;
$("button[name='daterange']")
  .daterangepicker({
    ranges: vm.presets,
    opens: 'left',
    format: 'YYYY-MM-DD',
    startDate: startDateValue,
    endDate: endDateValue
  }, function(start, end, label) { // cb for when dates are picked
    let filter = vm.$options.filters.date;
    vm.range = {
      start: start,
      end: end
    };
    console.log(vm.range);
    vm.$root.$emit('date.change', vm.range);
  });

数据如下:

data: function() {
  return {
    currentRange: 'Last 7 Days',
    presets: {},
    range: {},
  }
},

由于某种原因,range 的观察程序没有被执行,我也看不到 vue-dev-tool 中的更新值。但是当我控制台记录range 的值时,它有正确的数据。这就是为什么我把发射放在它下面的原因。谁能帮我找出为什么反应在这里不起作用?

【问题讨论】:

    标签: vue.js vuejs2


    【解决方案1】:

    根据the usage instructions,您将format 设置在locale 对象中。这对我有用。

    new Vue({
      el: '#app',
      data: {
        currentRange: 'Last 7 Days',
        presets: {},
        range: {}
      },
      mounted() {
        let vm = this;
        $("[name='daterange']")
          .daterangepicker({
            ranges: vm.presets,
            opens: 'left',
            locale: {
              format: 'YYYY-MM-DD'
            },
            startDate: '2017-01-01',
            endDate: '2017-02-01'
          }, function(start, end, label) { // cb for when dates are picked
            vm.range = {
              start: start,
              end: end
            };
          });
      }
    });
    <!-- Include Required Prerequisites -->
    <script src="//cdn.jsdelivr.net/jquery/1/jquery.min.js"></script>
    <script src="//cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
    <link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/bootstrap/3/css/bootstrap.css" />
    
    <!-- Include Date Range Picker -->
    <script src="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.js"></script>
    <link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.css" />
    <script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.min.js"></script>
    
    <div id="app">
      <button name='daterange'>Pick</button> {{range}}
    </div>

    【讨论】:

    • 更新答案。
    • 这仍然没有反应。
    • 问题只出现在第一个页面加载时。如果我将选项卡切换到另一个组件,它可以工作。
    • 我的 sn-p 是否按您的预期工作?你能做一个演示你实际问题的sn-p吗?
    猜你喜欢
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 2019-06-16
    • 2017-09-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    相关资源
    最近更新 更多