2017-03-24 6 views
0

Ich bin neu in Typoskript und MVC, also bin ich nicht einmal sicher, ob ich die richtige Frage stelle. Aber ich habe funktional identische Typoskript-Dateien, die für mehrere Suchbildschirme verwendet werden. Also versuche ich, es zu einer einzigen Datei zu konsolidieren, die den Namen und Bereich des Suchbildschirms (Strings) übernimmt und von dort abfährt. Gibt es eine Möglichkeit, diese Informationen aus der Ansicht an die Typoskriptdatei zu übergeben?Wie übergibt man String an Modulvariablendefinitionen?

Hier ist ein kleiner Code meines Typoskripts für den Kontext.

Die Werte für Bereich und Suchname sind, was ich gerne einstellen könnte.

EDIT: Nachdenken über Paleo Rat unten, dachte ich vielleicht nur die Variablen zu brechen, die ich brauche in seine eigene Klasse könnte mich näher bringen. Also habe ich meinen Code ein wenig überarbeitet, aber ich brauche noch einen Weg diese Variablen zu setzen.

class definitions { 
    public static area = ""; 
    public static searchName = ""; 
} 

module HarSearch { 
    const area = definitions.area; 
    const searchName = definitions.searchName; 
    . 
    . 
    . 
    // rest is the same 
} 
+0

Sie stattdessen eine Klasse oder eine Funktion verwenden könnte? (Hinweis: Ihr "Modul" ist ein [_namespace_] (https://www.typescriptlang.org/docs/handbook/namespaces.html).) – Paleo

+0

Ich habe das tatsächlich versucht. Ich konnte es jedoch nicht für meine Anwendung verwenden, weil ich auf ein Kendo-Gitter zugreifen muss, und wenn ich zu einer Klasse wechsele, kann ich diese Daten nicht mehr bekommen. Entschuldigung, ich habe vergessen, das in meinem Post zu erwähnen. –

Antwort

0

Hier ist, was ich am Ende tun. Es ist nicht meine ideale Lösung, aber es funktioniert. Ich habe meine Variablen nicht in ihre eigene Klasse gebrochen. Sie sind immer noch im Modul. Ich habe in meiner Ansicht ein Skript hinzugefügt, um globale Variablen festzulegen, auf die dann vom Modul verwiesen wird, wobei meine Model.SearchArea und Model.SearchName nur Zeichenfolgen sind.

VIEW

<script type="text/javascript"> 
    $(function() { 
     searchArea = @Html.Raw(Json.Encode(Model.SearchArea)); 
     searchName = @Html.Raw(Json.Encode(Model.SearchName)); 
    }) 
</script> 

TS Datei

module Search { 
    declare var searchArea: string; 
    declare var searchName: string; 
    var gridName: string; 
    var searchGrid: JQuery; 
    var gridOptionsStorageName: string; 
    var filtersStorageName: string; 
    const filterFormName = "formFilters"; 
    var defaultGridOptions: kendo.ui.GridOptions; 

    $(() => { 
     gridName = searchName + "SearchGrid"; 
     searchGrid = $(`#${gridName}`); 
     gridOptionsStorageName = searchName + "GridOptions"; 
     filtersStorageName = searchName + "SearchFilters"; 

     var searchGridData = searchGrid.data("kendoGrid"); 
     KendoGridFunctions.resizeGrid(searchGrid, -25); 
     defaultGridOptions = searchGridData.getOptions(); 
     loadSearchState(); 
    }); 

    . 
    . 
    . 
    //more functions 
} 
Verwandte Themen