gpt4 book ai didi

vue.js - Vue 过滤器从 vue 1 迁移到 vue 2

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:26 28 4
gpt4 key购买 nike

我在将过滤器从 vue 1 迁移到 vue 2 时遇到问题,我在这里完全创建了我需要的东西(突出显示与输入文本匹配的文本):

Vue.component('demo-grid', {
template: '#grid-template',
props: {
filterKey: String
},
data: function () {
return {
searchParams: [
{ key: '' }
],
suggestions: [
{ message: 'Foo' },
{ message: 'Bar' },
{ message: 'Foobar' },
{ message: 'pikachu' },
{ message: 'raichu' }
]
}
},
filters: {
highlight: function(words, query){
var iQuery = new RegExp(query, "ig");
return words.replace(iQuery, function(matchedTxt,a,b){
return ('<span class=\'highlight\'>' + matchedTxt + '</span>');
});
}
}
})


// bootstrap the demo
var demo = new Vue({
el: '#demo'
})

https://jsfiddle.net/t5ac1quc/23/ VUE-1资源
https://jsfiddle.net/t5ac1quc/25/ VUE-2资源

非常感谢所有的答案

最佳答案

Updated fiddle .

<template id="grid-template">
<ul>
<li v-for="suggest in suggestions" v-html="highlight(suggest.message, filterKey)"></li>
</ul>
</template>

<div id="demo">
<form>
Search <input v-model="searchParams.key">
</form>
<demo-grid :filter-key="searchParams.key"></demo-grid>
</div>
Vue.component('demo-grid', {
template: '#grid-template',
props: {
filterKey: String
},
data: function () {
return {
suggestions: [
{ message: 'Foo' },
{ message: 'Bar' },
{ message: 'Foobar' },
{ message: 'pikachu' },
{ message: 'raichu' }
]
}
},
methods: {
highlight: function(words, query) {
var iQuery = new RegExp(query, "ig");
return words.replace(iQuery, function(matchedTxt,a,b){
return ('<span class=\'highlight\'>' + matchedTxt + '</span>');
});
}
}
})

new Vue({
el: '#demo',
data: {
searchParams: {
key: '',
},
},
});

总结:

  • 使用 <script> 时用于存储模板的标签,设置type="template" (或类似)以防止浏览器将模板作为 JavaScript 执行。或者更好的是使用 <template>相反。
  • {{{ html }}}不再支持语法。在 Vue 2 中你必须使用 v-html指令代替。
  • v-html是一个指令(并且不使用 {{ }} 插值),它不使用过滤器语法。请改用方法。
  • 您对数据范围有一些疑问。根组件需要为 searchParams 定义数据在其模板中使用。还有 searchParams是一个数组,但您没有将它用作数组(searchParams.key);这不适用于 Vue 2(所有响应式数据属性必须预先正确声明)。

关于vue.js - Vue 过滤器从 vue 1 迁移到 vue 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45165086/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com