Wie man rohe HTML mit Filter anzeigt?VueJS2 v-html mit Filter
Ich habe so etwas wie dies:
K.json = function(json) {
if(typeof json!='string') json = JSON.stringify(json, null, 2);
json = json.replace(/</g, '<').replace(/>/g, '>'); // replace(/&/g, '&')
var pattern = /("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g;
var html = json.replace(pattern, function(match) {
var cls = 'number';
var suffix = '';
if(/^"/.test(match)) {
if(/:$/.test(match)) {
cls = 'key';
match = match.slice(0, -1);
suffix = ':'
} else {
cls = 'string';
}
} else if(/true|false/.test(match)) {
cls = 'boolean';
} else if(/null/.test(match)) {
cls = 'null';
}
return '<span class="' + cls + '">' + match + '</span>' + suffix;
});
return html;
};
Vue.filter('json', K.json);
Und sie so etwas wie folgt verwenden:
<div v-html="thecolumn | json"></div>
Es zeigt eine Warnung und falsch angezeigt:
vue.js:523 [Vue warn]: Property or method "json" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option.
(in Wurzel gefunden Beispiel)
ich auch Lösung von Forum versucht: https://laracasts.com/discuss/channels/vue/use-a-filter-custom-filter-in-v-html-property?page=1
<p v-html="this.$options.filters.json(description)"></p>
Es zeigt Fehler:
[Vue warn]: Error when rendering root instance:
vue.js:3063 Uncaught TypeError: Cannot read property 'filters' of undefined
at eval (eval at makeFunction (vue.js:8260), <anonymous>:2:2975)
at Proxy.renderList (vue.js:3158)
at Proxy.eval (eval at makeFunction (vue.js:8260), <anonymous>:2:2169)
at Vue$3.Vue._render (vue.js:3054)
at Vue$3.<anonymous> (vue.js:2430)
at Watcher.get (vue.js:1661)
at new Watcher (vue.js:1653)
at Vue$3.Vue._mount (vue.js:2429)
at Vue$3.$mount (vue.js:6000)
at Vue$3.$mount (vue.js:8327)
Was ist der richtige Weg, dies auf VueJS2 zu tun?
I denke, es gibt nicht - in 'v-html' alle Daten binden gs usw. werden ignoriert. –