【发布时间】:2017-04-18 23:22:51
【问题描述】:
我正在 vue.js 中编写一个(非常)简单的 datepicker 控件,使用 moment.js 来格式化和改变日期。
我遇到的问题是,即使当我单击任一按钮时修改了组件中的日期实例,显示也不会更新。
我尝试将其更改为简单的整数而不是日期实例,并且按预期工作(DOM 已正确更新)
这是我的源代码:
App.js
Vue.component("datePicker", {
props: ["value"],
data: function() {
return { selectedDate: moment(this.value) };
},
template: "<div><button v-on:click='decrement'><</button>{{formattedSelectedDate}}<button v-on:click='increment'>></button></div>",
methods: {
increment: function () {
this.selectedDate.add(1, "days");
this.$emit('input', this.selectedDate);
},
decrement: function () {
this.selectedDate.subtract(1, "days");
this.$emit('input', this.selectedDate);
}
},
computed: {
formattedSelectedDate: function() {
return this.selectedDate.format("YYYY-MM-DD");
}
}
});
var PointTracker = new Vue({
el: "#PointTracker",
data: {
selectedDate: moment(),
todoItems: {}
}
});
索引.html
<html>
<head>
<meta charset="utf-8">
<title>Point Tracker</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="PointTracker">
<date-picker v-model="selectedDate">
</div>
<script src="node_modules/moment/moment.js"></script>
<script src="node_modules/vue/dist/vue.js"></script>
<script src="node_modules/vue-resource/dist/vue-resource.js"></script>
<script src="app.js"></script>
</body>
</html>
【问题讨论】:
-
我已经为你的代码创建了一个fiddle,我还在 div 中添加了更多元素,不知道为什么它们没有呈现。
标签: javascript vue.js