Ich habe eine Vue-Direktive in einem angehängten HTML-Element wie die v-on-Direktive hinzugefügt, aber es funktioniert nicht an meinem Ende. Grundsätzlich möchte ich das Äquivalent von .on() in jquery wissen.Wie man die Vue js-Anweisung in einem angehängten html-Element arbeitet
Antwort
"Vue.js Kompilierung passiert, wenn Sie die Root-Instanz instanziieren/mounten. Es wird kein neues DOM erkannt, es sei denn, es ist ein Ergebnis einer Direktive (zB v-repeat, v-partially erzeugt dynamisch neues DOM Fragmente). " https://github.com/vuejs/Discussion/issues/77
Sie haben Ihre neu hinzugefügte Element wie folgt zu kompilieren:
html:
<div id="app">
<button v-on="click: addNewElement()">Add Element</button>
<br />
</div>
JavaScript
new Vue({
el: '#app',
data: {
sampleElement: '<button v-on="click: test()">Test</button>'
},
methods:{
addNewElement: function(){
var element = $('#app').append(this.sampleElement);
/* compile the new content so that vue can read it */
this.$compile(element.get(0));
},
test: function(){
alert('Test');
}
}
});
Siehe diese Arbeit Fiddle
auf Firefox:
http://jsfiddle.net/chrislandeza/syewmx4e/
aktualisieren
$ Kompilierung hat auf Vue 2.x entfernt
Ich habe darauf hindeutet Menschen gesehen Vue.compile oder
var tmp = Vue.extend({
template: 'Content'
})
new tmp().$mount(' id or refs ')
Diejenigen aber, 2 verhält sich nicht wie die alt $ kompilieren.
Sie müssen den HTML-Code als Vorlage der Komponente registrieren.
Für Vue 2.x wird hier auf die neue Lösung im Dokument verwiesen: https://vuejs.org/v2/api/#vm-mount (siehe 'Beispiel').
Gewohnheit Beispiel:
var MyComponent = Vue.extend({
template: '<div v-on:click="world">Hello!</div>',
methods : {
world : function() {
console.log('world')
}
}
})
var component = new MyComponent().$mount()
document.getElementById('app').appendChild(component.$el)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.min.js"></script>
<div id="app"></div>
wirkt wie ein Zauber!
- 1. Wie startet man E-Mail-Absicht mit einem angehängten Bild?
- 2. Wie man angehängten Inhalt manipuliert? Jquery
- 3. Wie startet man die Aktivität mit einer angehängten Bitmap?
- 4. Wie konvertiert man ein HTMLElement in eine Zeichenfolge
- 5. Wie arbeitet man mit einem Bild mit URL in Android?
- 6. Get google.maps.Map-Instanz von einem HTMLElement
- 7. bekomme alle routen in einem vue router
- 8. Vue iFrames mit Vue Router
- 9. Verschachtelte Tabellenzeilen in Vue
- 10. Get HTMLElement von Element
- 11. wie man mit NSPredicate arbeitet
- 12. Wie man Twitter Bootstrap arbeitet in Plunker?
- 13. IQueryable IGrouping wie man arbeitet
- 14. wie man mit Süden in Django arbeitet
- 15. Wie man nur auf einem Teil der Linie arbeitet
- 16. Klassenbindung in Vue
- 17. hasOwnProperty Htmlelement Firefox
- 18. In Vue JS innerhalb der vue Instanz eines Filters aus einem Methodenaufruf
- 19. Unterschiede zwischen Vue-Instanz und Vue-Komponente?
- 20. wie man history.js zufälliger erster Zustand arbeitet
- 21. Wie kann man in C# eine Funktion von einem an ein Spielobjekt angehängten Skript zu einem anderen aufrufen?
- 22. Wie wird die Listenansicht in Vue Js verwendet?
- 23. Wie man globale Komponenten mit vue-Router registriert
- 24. Verknüpfen eines angehängten Titels
- 25. Wie man dotnetopenid mit AOL arbeitet
- 26. jQueryMobile: Wie man mit Schiebereignissen arbeitet?
- 27. Konvertieren eines HtmlElement in ein Image?
- 28. Wie ESLint in Vue-CLI deaktivieren?
- 29. Wie eine benutzerdefinierte Richtlinie in Vue
- 30. Wie man mit varargs und Reflexion arbeitet
Warum funktioniert es nicht mit Chrom? –
@Alexandros Weil ich rohes Github auf der externen Ressource meiner Geige verwendete. Ich habe das gerade behoben und meine Antwort aktualisiert. Das tut mir leid. –
Leider funktioniert es nicht mehr mit der neuen Vue-Version. Erstens hat sich die Syntax für Klickereignis geändert. Zweitens gibt es keine "$ compile" -Funktion mehr (wahrscheinlich umbenannt). Wenn Sie die Syntax zum Kompilieren und Fixieren entfernen, fügen Sie Schaltflächenfunktionen hinzu, aber neue Schaltflächen tun nichts. –