Ich glaube nicht, dass dies ein Vue-basiertes Problem ist, aber ich laufe in Schwierigkeiten.Mit vue.js auf eine Leinwand zeichnen
Ich möchte auf die Leinwand eine Vue-Variable schreiben. Wenn ich Vue entferne, funktioniert mein ursprünglicher Code gut, aber wenn ich Vue hinzufüge, startet der Canvas tatsächlich nicht.
Hier ist mein Code
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
ctx.fillStyle = "black";
ctx.font="20px Georgia";
ctx.fillText("Hello World!",10,50);
var v = new Vue({
el: '#app',
data: {
'exampleContent': 'This is TEXT'
},
watch: {
exampleContent: function(val, oldVal) {
ctx.clearRect(0,0,canvas.width,canvas.height);
ctx.fillStyle = "black";
ctx.font="20px Georgia";
ctx.fillText(this.exampleContent,10,50);
}
}
});
Wenn ich /* var v = new Vue({ ...
die ersten Bit Werke Kommentar aus. Wenn ich den Wert exampleContent
im Watcher protokolliere, der auch funktioniert. Aber etwas an der Leinwand funktioniert nicht.
Demo spielen: http://codepen.io/EightArmsHQ/pen/EgGbgR?editors=1010
Für weitere Informationen über Richtlinien, hier ist der Link zu docs - https://vuejs.org/guide/custom-directive.html – Mani
Hallo Mani, vielen Dank für die Antwort. Wie könnte ich in Ihrem Beispiel die Anweisung "change/watcher" auslösen, um den Text auf die Arbeitsfläche zu legen? Egal, ich habe die Leinwand außerhalb der App (genau wie du gesagt hast) bewegt und das funktioniert super, also danke für die Hilfe. – Djave
Wenn Sie nicht auf die 'directive' Route gehen wollten, könnten Sie Ihre canvas updates zu einer' Methode' abstrahieren, die sowohl auf der Vue-Instanz 'mounted' als auch auf Ihrer' watch' ausgelöst wird. http://codepen.io/itopizarro/pen/amPEEO?editors=1010 –