【问题标题】:Vue.js Slug filter in link链接中的 Vue.js Slug 过滤器
【发布时间】:2020-02-26 05:40:28
【问题描述】:

我制作了一个小的 vue.js 过滤器并将其包装在 _lodash kebab-case 中,以使我的链接在通过产品/摩托车之类的完整 URL 时对 SEO 友好,但是我无法包装过滤器在绑定的href中,因为它过滤了所有的url,所以我最终得到了products-motor-bikes。它将过滤器应用于表达式的整个左侧。

如何包装我的过滤器,使其仅适用于绑定值而不适用于产品字符串?

<a :href="'/products/'+motorbike.title+'' | kebab" class="c-sau-card__f-btn mt-3">Buy Now</a>

过滤器

Vue.filter('kebab', function (string) {
 return _.kebabCase(string);
})

【问题讨论】:

    标签: vue.js


    【解决方案1】:

    您不能只对表达式的一部分应用过滤器;这需要一个方法:

    <a :href="`/products/${kebab(motorbike.title)}`">
    
    methods: {
      kebab: _.kebabCase
    }
    

    或者,如果您只想在表达式的一部分上调用过滤器,那么您可以这样做(尽管我不推荐这样做):

    <a :href="`/products/${$options.filters.kebab(motorbike.title)}`">
    

    另外值得一提的是,过滤器将在 Vue 的下一个主要版本(版本 3)中移除,所以我会避免使用它们。

    【讨论】:

    • 是的,它是template literal。如果您愿意,可以使用+ 来代替。
    • 您需要在 Vue 实例上定义一个 kebab 方法,就像我展示的那样,它才能在模板中使用。如果您想在所有 Vue 组件中使用它,可以将其放入全局 mixin
    猜你喜欢
    • 2017-02-10
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 2016-06-17
    • 2020-01-05
    • 1970-01-01
    • 2012-10-27
    相关资源
    最近更新 更多