Vue错误笔记(一)——vue中使用boostrap的datepicker 数据无法绑定与无法提交(一)

  • Post author:
  • Post category:vue

使用datepicker遇到了两个问题:

一、无法绑定

当选择好开始时间结束时间后,去修改其他字段,开始时间与结束时间会被清空。

在网上找解决方案时,参考这篇http://www.youtiy.com/detail_308.html解决了这个问题

通过在datetimepicker的回调函数中用vue.set对开始时间结束时间 两个字段赋值;editVM.activity 为实体,”StartTime”为实体的属性,startTime为值,Vue.set的具体方法可参考文档


var  editVM = new Vue({
        el: "#Edit_VM",
        data:{
            
            activity: {
                   StartTime:'',
                   EndTime:'',
                   Name:'',
            },                                           
          
        },
        mounted:function(){
            var _self = this;
            $(".datetimepicker").datetimepicker({
                autoclose: true,
                todayHighLight: true,
                language: 'zh-CN'

            }).on('changeDate', function (ev) {
                var _self = this;
                var startTime = $("#StartTime").val();
                var endTime = $("#EndTime").val();
                 /*
                   *editVM换成_self.activity报错,不知道为什么*
                   */
                Vue.set(editVM.activity, "StartTime", startTime);
           
                Vue.set(editVM.activity, "EndTime", endTime);

                
            }); 

        }

 

二、无法提交数据

此时可以绑定v-model 与 开始时间结束时间 都在 activity对象 中,提交数据时 提示StartTime和EndTime为空;

我猜测跟StarTime 与 EndTime 无法绑定v-model有关,于是把这两个值放在另一个对象Time中

 data:{         
            activity: {
                 Name:'',  
            },
         
            Time: {
                StartTime: '',
                EndTime: '',
            }                  
          
     },
mounted:function(){
     var _self = this;
            $(".datetimepicker").datetimepicker({
                autoclose: true,
                todayHighLight: true,
                language: 'zh-CN'

            }).on('changeDate', function (ev) {
                var _self = this;
                var startTime = $("#StartTime").val();
                var endTime = $("#EndTime").val();
                //改成Time对象
                Vue.set(editVM.Time, "StartTime", startTime);
                Vue.set(editVM.Time, "EndTime", endTime);

               
       });
}

通过Time对象传递数据,然后就可以传过来了:

 

 

我觉得这个方法不太完美 ,又在网上找了另一个解决方案,详情见下一篇

vue使用boostrap的datepicker 数据无法绑定与无法提交(二)

 


版权声明:本文为hhhhhhenrik原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。