2017-07-26 5 views
0

Ich bin eine Website von AngularJS 1.x, die stark auf die $ Kompilierdienst verlässt (die nicht mehr in Angular 2.x verfügbar ist. In der Anwendung habe ich eine Anweisung, dass sieht in etwa so <myDir elemId="someRestEndPointID"></myDir> und macht folgendes:Rendering benutzerdefinierte verschachtelte HTML in Vue.js

1) ein http Anruf getätigt wird und die Antwort gibt eine Zeichenfolge, die eine Richtlinie <myDir elemId="someRestEndPointID"></myDir>

2) ein Aufruf an den Server erfolgt enthält, die für/someRestEndPointID

3) Angular bekommt den Inhalt und rendert und schaut für einen anderen <myDir> Tag

4) der Prozess wird wiederholt (rekursiv)

haben noch fand ich nicht etwas, das dies für unsere neuen Rahmen tut Vue.js. Gibt es eine ähnliche Funktion oder Bibliothek, die diese Logik in Vue.js erreichen würde?

Antwort

0

Das scheint wie eine komplizierte Art zu arbeiten, und ich würde diesem Muster nicht folgen. Warum nicht eine Komponente erstellen, die einen Endpunkt als Eigenschaft akzeptiert <your-component endpoint="https://example.org/"></your-component> und dann Komponente wird den Aufruf innerhalb der create Methode tun?

<template> 
    <div> 
    <img src="loading.jpg" v-show="loading" /> 
    <!-- Content here --> 
    {{content}} 
    </div> 
</template> 

<script> 

    export default { 
    props: ['endpoint'], 
    data() { 
    return { 
     loading: true, 
     content: null 
    }; 
    }, 
    created() { 
    this.$http.get(this.endpoint).then(resp => { 
     this.content = resp.body; 
     this.loading = false; 
    }); 
    } 
    } 
</script> 
+0

Würde gerne, aber das Muster ist bereits durch die Angular App etabliert. dh die Antwort vom Server liefert auf diese Weise strukturierte Daten. – arturobelano

+0

Hmm ... Wären Sie in der Lage, den Endpunkt aus dem div zu ziehen, das sie zurücksenden, und eine Komponente damit zu erstellen, indem Sie https://vuejs.org/v2/api/#Vue-compile verwenden? – Stephen

+0

Näher und näher denke ich, aber die Renderfunktion ist synchron und die Daten sind asynchron. Ich denke, wir müssen die Renderfunktion aufrufen, ist eine nicht synchronisierte Mode. Können Sie das tun? – arturobelano