单击“阅读更多”链接时截断并显示或隐藏链接文本

use*_*357 0 html javascript vue.js vue-component vuejs2

如果限制超过 300 个字符,我想隐藏文本并显示link,如果单击链接则显示完整内容。

html:

 <tr v-for="(row,index) in datasource">
                            <td v-for="column in gridSchema.grid.columns" class="wrap-break-word" v-show="column.isVisible">  

<span v-if="row[column.headername].length >= 300  && toggle == false" v-html="$options.filters.limitTo(row[column.headername])">
                                    </span><a v-on:click="toggleFlag()" v-show="!row['isEditable'] && row[column.headername].length >= 300  && toggle == false" >Read more</a>
                                    <span v-if="(row[column.headername].length < 300  || toggle == true)" v-html="row[column.headername]">
                                    </span>

<td>
</tr>
Run Code Online (Sandbox Code Playgroud)

js:

  data: {
                ..
                    toggle: false,
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": "-",
        "biliography":"-"

      }
    ]
               ..
            }
    methods:{

    toggleFlag: function () {
                    console.log('within toggleflag final');
                    this.toggle = !this.toggle;
                }

    },
     filters: {
                limitTo: function (value) {
                    if (!value) return '';
                    return value.substring(0, 300 )+ '...';
                }
Run Code Online (Sandbox Code Playgroud)

编辑:上面的代码有效,但是当单击“阅读更多”时,它会应用于显示链接的表的所有列。

示例:表行的 col1 、 col5 超过 300 个字符并显示“阅读更多”链接。当单击 col1 的“阅读更多”链接时,它也适用于 col5,并且所有行的列文本都会展开。它应该适用于特定的行和特定的单元格。

添加了数据源对象。我添加了静态数据源,但它是动态的,并且随列数的变化而变化。

Bob*_*ger 6

使用v-if
v-if="obj.informations.length > 300"

例子:

<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>
Run Code Online (Sandbox Code Playgroud)

但是您可能会编写toggleSummary() 方法而不是内联summary = false处理程序,并且可能使用对摘要而不是过滤器做出反应的计算属性。