Änderungscode funktioniert nicht im VS Studio Code Editor

Wenn ich Code aus dem hbs-Ordner auf localhost nehme und in einen anderen hbs-Ordner einfüge, funktioniert er nicht. Es werden einige Texte dort eingefügt und sie sind auf dieser Seite, aber sie haben absolut keine Funktionalität. Nach dem Aktualisieren der Seite wird alles zurückgesetzt, da es nur wie ein String ist.

Können Sie mir helfen?

Wenn ich zum Beispiel alles von interface.hbs in account.hbs einfügen wollte, damit es Funktionalität hätte, was müsste ich tun?

Ich denke, die Beantwortung dieser Frage würde vielen Menschen helfen.

Vielen Dank für Ihre Antwort.

Die Dinge sind ein wenig komplizierter als das. Dies hat nichts mit Ihrem Editor zu tun, VS Code ist eine ausgezeichnete Wahl.

Discourse ist eine MVC Single-Page-Anwendung, die EmberJS im Frontend verwendet und Routen, Modelle, Controller und Vorlagen nutzt.

Das Ändern nur der Vorlagen ist normalerweise nicht ausreichend.

Es wäre sehr gut für Sie, etwas über EmberJS zu lesen.

Aber zum Beispiel ist ein Teil des Grundes, warum es keine Funktionalität gibt, dass die Controller unterschiedlich sind.

Hier sind alle Controller für diesen Teil des JavaScript-Endes der Anwendung:

https://github.com/discourse/discourse/tree/main/app/assets/javascripts/discourse/app/controllers/preferences

Die leichte Komplikation hier ist, dass Komponenten manchmal auf Aktionen reagieren, ebenso wie Controller.

Darüber hinaus müssen Sie sich möglicherweise darum kümmern, welches Modell diesen verschiedenen Routen präsentiert wird.

Die Präferenzrouten sind hier mit dem Präfix preferences:

https://github.com/discourse/discourse/tree/main/app/assets/javascripts/discourse/app/routes

Es wird sogar noch komplexer, da die Daten, die Ember sieht, fast immer ursprünglich vom Backend geliefert werden und somit von den Rails-Routen, Controllern (und oft Modellen) und Serializern im Backend beeinflusst werden. Siehe https://guides.rubyonrails.org/

4 „Gefällt mir“

Versuchen Sie, Änderungen am Kern vorzunehmen (das möchten Sie fast sicher nicht tun) oder entwickeln Sie ein Plugin? Wenn Sie dies noch nicht getan haben, werfen Sie einen Blick auf Anfängerleitfaden zur Erstellung von Discourse-Plugins Teil 1: Erstellung eines einfachen Plugins.

3 „Gefällt mir“

Ja, weil ich einige Funktionen woandersher bekommen muss

Sie können “einige Funktionen woanders erhalten” in einem Plugin. Wenn Sie Discourse forken, werden Sie es bereuen, wenn Sie es länger als einen Monat nutzen wollen. Ich habe ein Dashboard entwickelt, mit dem Sie Discourse als Plugin installieren und verwalten können.

5 „Gefällt mir“

Ich habe ein Plugin in Discourse hochgeladen und in plugins/notebook-main/assets/javascripts/discourse/controllers/notebook.js.es6 die notwendige Schnittstellendatei ersetzt. Dasselbe habe ich auch mit der HBS-Vorlage gemacht.

Theoretisch funktioniert alles, außer dass wir die Änderungen nicht speichern wollen.

Uncaught Error: Property set failed: object in path "model.user_option" could not be found.
    Ember 3
    save notebook:194
    _join backburner.js:995
    join backburner.js:760
    Ember 4
    _triggerAction d-button.js:137
    click d-button.js:106
    Ember 2
    _run backburner.js:1013
    _join backburner.js:989
    join backburner.js:760
    Ember 6
    jQuery 8
    initialize click-interceptor.js:15
    initialize app.js:47
    runInstanceInitializers Ember
    each dag-map.js:231
    walk dag-map.js:145
    each dag-map.js:75
    topsort dag-map.js:83
    Ember 4
    invoke backburner.js:338
    flush backburner.js:229
    flush backburner.js:426
    _end backburner.js:960
    end backburner.js:710
    _run backburner.js:1015
    _join backburner.js:989
    join backburner.js:760
    Ember 2
    jQuery 12