6👍
Using v-if
v-if="obj.informations.length > 300"
Example:
<div v-if="summary">
{{ obj.informations | linitToDisplay(300) }}
<a v-if="obj.informations.length > 300" @click="summary = false">Read more<a>
<div v-else>
{{ obj.informations }}
</div>
But you’d probably write toggleSummary() method instead of the inline summary = false
handler and maybe use computed property that reacts to summary instead of a filter.
2👍
You could use a computed
property to handle that case and when you click on the link the whole link text will be shown :
EDIT
i suggest the following solution which built by altering your datasource
and by modifying each cell in the mounted
hook, "id":0
will be "id":{txt:0,toggled:true}
, "informations":"..."
will be "informations":{txt:"...",toggled:false}
and so on. and when you click on a cell you will only modify its toggled
property to false
// ignore the following two lines, they just disable warnings in "Run code snippet"
Vue.config.devtools = false;
Vue.config.productionTip = false;
new Vue({
el: '#app',
data() {
return {
toggle: false,
link: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum augue eros, varius in massa vitae, ultrices fringilla eros',
showAll: false,
columns: ["id", "name", "informations", "biliography"],
datasource: [{
"id": 0,
"name": "Christa Hansen",
"informations": "Unpleasant astonished an diminution up partiality. Noisy an their of meant. Death means up civil do an offer wound of. Called square an in afraid direct. Resolution diminution conviction so mr at unpleasing simplicity no. No it as breakfast up conveying earnestly immediate principle. Him son disposed produced humoured overcame she bachelor improved. Studied however out wishing but inhabit fortune windows. ",
"biliography": "Remember outweigh do he desirous no cheerful. Do of doors water ye guest. We if prosperous comparison middletons at. Park we in lose like at no."
},
{
"id": 1,
"name": "Mckenzie Fuller",
"informations": "Did shy say mention enabled through elderly improve.",
"biliography": " It ye greatest removing concerns an overcame appetite. Manner result square father boy behind its his. Their above spoke match ye mr right oh as first. Be my depending to believing perfectly concealed household. Point could to built no hours smile sense. "
},
{
"id": 2,
"name": "Oneal Clark",
"informations": "some info",
"biliography": "some info"
}
]
}
},
computed: {
trunc_link() {
return this.link.substring(0, 30)
}
},
methods: {
toggleFlag: function(index, column) {
this.datasource[index][column].toggled = true;
},
limitTo: function(value) {
if (!value) return '';
return value.substring(0, 50) + '...';
}
},
mounted() {
let d = [];
d = this.datasource.map(item => {
let o = {
"id": {
txt: item.id,
toggled: true
},
"name": {
txt: item.name,
toggled: true
},
"informations": {
txt: item.informations,
toggled: false
},
"biliography": {
txt: item.biliography,
toggled: false
},
}
return o;
});
this.datasource = d;
//console.log(this.datasource)
}
});
.readmore {
color: #005faa!important;
cursor: pointer;
}
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>
<div id="app" class="container">
<a href="#" v-if="!showAll" @click="showAll=true"> {{trunc_link}}...</a>
<a href="#" v-else> {{link}}</a>
<table class="table-striped">
<tbody>
<tr v-for="(row,index) in datasource">
<td v-for="column in columns" class="wrap-break-word" v-show="true">
<span v-if="row[column].txt.length >= 50 && row[column].toggled == false" v-html="limitTo(row[column].txt)">
</span><a class="readmore" v-on:click="toggleFlag(index,column)" v-show="!row['isEditable'] && row[column].txt.length >= 50 && row[column].toggled == false">Read more</a>
<span v-if="(row[column].txt.length < 50 || row[column].toggled == true)" v-html="row[column].txt">
</span>
<td>
</tr>
</tbody>
</table>
</div>
- [Vuejs]-Plyr and vue.js: accessing the video duration by a computed property
- [Vuejs]-Reverse array issue in VueJs
Source:stackexchange.com