1 使用vue組件包裝jquery插件有如下好處html
<!--jquery日期組件的使用-->
Date: <input id="datepicker"/>
$('#datepicker').datepicker();
<!--使用vue包裝-->
Vue.component('date-picker', function() {
template: '<input/>'
});
new Vue({
el: '#app'
});
<div id="app">
Date: <date-picker></date-picker>
</div>
複製代碼
<!--this.$el是由於組件根節點是input-->
Vue.component('date-picker', function() {
template: '<input/>',
mounted: function() {
$(this.$el).datepicker();
}
});
複製代碼
Vue.component('date-picker', {
template: '<input/>',
mounted: function() {
$(this.$el).datepicker();
},
beforeDestroy: function() {
$(this.$el).datepicker('hide').datepicker('destroy');
}
});
複製代碼
Vue.component('date-picker', {
template: '<input/>',
props: [ 'dateFormat' ],
mounted: function() {
$(this.$el).datepicker({
dateFormat: this.dateFormat
});
},
beforeDestroy: function() { ... }
});
<div id="app">
<date-picker date-format="yy-mm-dd"></date-picker>
</div>
複製代碼
<div id="app">
<date-picker date-format="yy-mm-dd" v-once></date-picker>
</div>
複製代碼
<!--根實例一個日期屬性-->
new Vue({
el: '#app',
data: {
date: null
}
});
<div id="app">
<date-picker date-format="yy-mm-dd" v-once></date-picker>
<p>{{ date }}</p>
</div>
<!--子組件添加$emit觸發事件-->
mounted: function() {
var self = this;
$(this.$el).datepicker({
dateFormat: this.dateFormat,
onSelect: function(date) {
self.$emit('update-date', date);
}
});
}
<!--根實例date-picker組件綁定update-date事件-->
<div id="app">
<date-picker @update-date="updateDate" date-format="yy-mm-dd" v-once></date-picker>
<p>{{ date }}</p>
</div>
new Vue({
el: '#app',
data: {
date: null
},
methods: {
updateDate: function(date) {
this.date = date;
}
}
});
複製代碼