javascript - Vue.js - 无法将日期/时间选择器添加到 vue.js 渲染的 html 元素中

标签 javascript vue.js vuejs2 vue-component

我有一个 Vue.js 组件,其中有一组文本字段(一组标记为“Start”的文本字段和另一个标记为“To”的文本字段)绑定(bind)到 Vue 数组 ( s.timespans) 。

我想要的是,当我通过向 ( s.timespans ) 数组添加元素来添加另一组文本字段时,所有文本字段都会获得日期/时间选择器。但不幸的是,现在只有第一组字段获得日期/时间选择器,而其他组则没有。这样做的正确方法是什么?

提前致谢。

<template id="settings">
<div v-for="(k,slot) in s.timespans" class="row mb5">
            <div class="col-sm-5">
                <label><?php _e( 'From', 'smps' ); ?></label>
                <input type="text" class="datepicker form-control" v-model="slot.from">
            </div>
            <div class="col-sm-5">
                <label><?php _e( 'To', 'smps' ); ?></label>
                <input type="text" class="datepicker form-control" v-model="slot.to">
            </div>
            <div class="col-sm-2">
                <a href="javascript:" class="btn btn-default pull-right btn-xs br0" @click="remove_timeslot(k)"><i class="fa fa-remove"></i></a>
            </div>
        </div>

<template>

Vue.js 代码

Vue.component( 'settings', {
        template : '#settings',
        data : function () {
            return {
                s : {
                    timespans : [
                        {from : '', to : ''}
                    ]
                }
            }
        },
        methods : {
            add_timeslot : function () {
                Vue.set(this.s.timespans,this.s.timespans.length,{from:'',to:''});
                $('.datepicker').datetimepicker();
            },
            remove_timeslot : function (k) {
                this.s.timespans.splice(k,1);
            },

        },

    });

最佳答案

试试这个,然后 DOM 将完成渲染,而不是在 nextTick 之前:

        add_timeslot : function () {
            Vue.set(this.s.timespans,this.s.timespans.length,{from:'',to:''});
            this.$nextTick(function () {
              $('.datepicker').datetimepicker();
            });
        },

当执行nextTick中的函数时,将渲染DOM元素。

关于javascript - Vue.js - 无法将日期/时间选择器添加到 vue.js 渲染的 html 元素中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44962977/

相关文章:

vue.js - 如何将动态函数名称传递给 Vue Js 中的点击事件

javascript - 如何将动态数据放入数组并将其附加到 dom vue.js

javascript - (VueJS) Vuex getter 应该根据另一个模块状态变化进行更新

javascript - 如何在我的移动网页上禁用多点触控缩放?

javascript - 刷新 Firebase token

javascript - 设置用于在 Firebase 中查询的数据结构

javascript - 传递给子组件的 Vue.js Prop 对象未定义

javascript - vue 路由器/:param with slashes

docker - docker下运行vue/cli app simple index.html打开

javascript - 将逗号替换为空格