Zugriff auf Variablen in einem Connector

Ich bin großartig in der Systemadministration. Im Umgang mit Rails bin ich nicht schlecht. Bei JavaScript, Ember und CSS bin ich jedoch ein Höhlenmensch.

In einem Plugin, das steuert, wer private Nachrichten (PMs) senden darf, versuche ich, auf der Profilseite einen Button hinzuzufügen, wenn der Benutzer keine Berechtigung zum Senden einer PM hat. Ich kann Text genau dort einfügen, wo ich ihn haben möchte, indem ich Inhalte in assets/javascripts/discourse/templates/connectors/user-summary-stat/my-clever-name.hbs platziere. (Es gab große Freude!).

Ich sehe, dass https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/templates/user/messages.hbs#L3 verwendet:

    {{#if showNewPM}}

Ich möchte das in my-clever-name.hbs verwenden, aber diese Variable ist dort nicht definiert.

Ich denke, ich muss vielleicht eine my-clever-name.js.es6 im selben Verzeichnis wie meine hbs-Datei erstellen und … irgendetwas einbinden, und/oder Code hinzufügen, der diese Variable definiert, damit ich darauf zugreifen kann. Ich habe den Entwicklerleitfaden ein paar Mal erneut gelesen und versucht, Code aus einigen Plugins nachzuahmen, die dasselbe zu tun scheinen, aber ich habe nicht genau gesehen, wie das geht.

Hallo Jay,

ich habe gehört, dass Leute EmberJS als „eine Sprache für sich selbst

Bedeutet also @discourseComputed("uploading"), dass uploading in einer hbs-Vorlage verwendet werden kann? So ähnlich wie:


fullName: computed('firstName', 'lastName', function() {
    return `${this.firstName} ${this.lastName}`;
  })

in Ember?

Ich werde also assets/javascripts/discourse/components/my-plugin.js.es6 erstellen und etwas . . . erweitern? Es scheint, als gäbe es eine Möglichkeit, einfach dieselben Variablen zu aktivieren, auf die die andere Vorlage Zugriff hat. OH! Vielleicht würden durch das Erweitern von diesem Ding in meiner Komponente diese Variablen für mich verfügbar?

Soll ich aufgeben, einen Schritt zurücktreten und eine Woche lang das Ember-Tutorial durcharbeiten?

Hiermit wird eine berechnete Eigenschaft namens ‘fullName’ eingerichtet, die aktualisiert wird, sobald sich ‘firstName’ oder ‘lastName’ ändern. Sie nimmt den Wert des Rückgabewerts an.

[quote=“merefield, Beitrag: 4, Thema: 141747”]
Das richtet also eine berechnete Eigenschaft namens „fullName

Die Vorlage, die zu Ihrer Komponente js gehört, kann auf Ihre berechnete Eigenschaft verweisen, indem Sie sie einfach in doppelte geschweifte Klammern setzen:

{{fullName}}

Der obige Code befindet sich in assets/javascript/discourse/components/user-private-messages.js.es6.

Ich möchte {{myFunThing}} und/oder {{myvalue}} in assets/javascripts/discourse/templates/connectors/user-profile-controls/add-link-to-subscription.hbs verwenden können, aber es ist undefiniert.

Ich vermute, dass sich eine dieser Dateien am falschen Ort befindet (ich sehe, dass anderer Text in der obigen hbs-Datei auf /u/username/summary gerendert wird, nur eben ohne myFunThing), oder dass ich die falsche Klasse importiere und/oder die falsche Komponente erweitere.

Tut mir leid, Jay, ich bin gerade etwas eingespannt. Du kannst aber einfach im Connector-HBS-Datei (z. B. innerhalb der HBS-Datei des Connectors) eine Verbindung zu deiner Komponente herstellen:

{{my-component}}

(Füge bei Bedarf Argumente hinzu.)

Dann sucht es nach my-component.hbs in templates/components und /components.

Alternativ solltest du die Eigenschaft in der JS-Datei im Connector-Verzeichnis setzen können, aber ich persönlich bevorzuge den ersten Ansatz.

Ich weiß, dass das schon ein Jahr her ist, aber hast du das Problem, @pfaffman, jemals gelöst?

Ich hoffe, das war nicht für dasselbe (unvollendete) Projekt, aber hier ist:

https://github.com/pfaffman/discourse-pfaffmanager/blob/master/assets/javascripts/discourse/templates/pfaffmanager-servers-show.hbs

Das ruft auf:

https://github.com/pfaffman/discourse-pfaffmanager/blob/master/assets/javascripts/discourse/templates/components/server-item.hbs

Und meiner Meinung nach:

https://github.com/pfaffman/discourse-pfaffmanager/blob/master/assets/javascripts/discourse/controllers/pfaffmanager-servers-show-item.js.es6