Typoskript-Karte die Funktion zum ändern der Eigenschaft Art

Ich versuche, mit map-Funktion, um die transform-Eigenschaft Art.

class A {... }
class B {... }

var var1 = [{path:"aa",comp:"A"},{path:"b",comp:"B"}];
var var2 = var1.map(function(obj){ 
   var rObj = {path: obj.path, component: A};
   return rObj;
});

Der obige code wird zurückgeben zu var2

[{path:"aa",comp:A},{path:"b",comp:A}]

Was ich brauche, ist

[{path:"aa",comp:A},{path:"b",comp:B}]

Wie kann ich dieses Ziel erreichen?

InformationsquelleAutor Shawn | 2016-05-14



One Reply
  1. 3

    Sie versuchen, die Zuordnung zwischen name einer Klasse (als string), um die tatsächliche Klasse.

    Sie können nur halten ein mapping-Objekt etwa so:

    class A { ... }
    class B { ... }
    
    var nameToClassMapping = {
        A: A,
        B: B
    };
    
    var var1 = [{ path: "aa", comp: "A" }, { path: "b", comp: "B" }];
    var var2 = var1.map(function(obj) { 
        var rObj = { path: obj.path, component: nameToClassMapping[obj.comp] };
        return rObj;
    });

    Code im playground

    • Ich lief den code und es kehrte das erwartete Ergebnis. Überprüfen Sie den link zum Spielplatz in meiner Antwort (nur hinzufügen)
    • Wenn die Klasse A und B zu definieren, die in der gleichen Datei funktioniert es wie erwartet. Aber wenn die Klasse ist eine importierte man mit import {A,B} aus … dann die Komponente, die Eigenschaft, zeigte nicht definiert. Warum ist das so?
    • sind Sie sicher, dass die Klassen geladen wurden? wenn Sie console.log(A, B) nach der import was bekommen Sie?
    • Mein schlechtes. Ich nicht übereinstimmende Namen der Eigenschaft und geben Sie in nameToClassMapping . Danke Ihnen so sehr für Ihre Geduld mit mir. Es funktioniert Super.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.