Я отлично справляюсь с системным администрированием. В Rails я тоже не новичок. А вот с JavaScript, Ember и CSS я чувствую себя как первобытный человек.
В плагине, который изменяет права на отправку личных сообщений, я пытаюсь добавить кнопку на страницу профиля, если у пользователя нет разрешения отправлять ЛС. Я могу добавить текст ровно туда, куда нужно, разместив его в assets/javascripts/discourse/templates/connectors/user-summary-stat/my-clever-name.hbs. (Это вызвало бурю восторга!).
Я бы хотел использовать это в my-clever-name.hbs, но эта переменная там не определена.
Думаю, мне, возможно, нужно создать файл my-clever-name.js.es6 в той же директории, что и мой hbs-файл, и включить туда что-то… или добавить код, который определит эту переменную, чтобы я мог к ней обратиться. Я несколько раз перечитал руководство для разработчиков, а также пытался скопировать код из некоторых плагинов, которые, кажется, делают то же самое, но так и не понял, как именно это сделать.
Итак, я создам файл assets/javascripts/discourse/components/my-plugin.js.es6 и расширю . . . что-то . . .? Похоже, должен быть способ просто «включить» те же самые переменные, к которым имеет доступ другой шаблон, который я расширяю. О! Возможно, если я расширю «то самое», эти переменные станут доступны в моём компоненте?
Может, стоит отступить и потратить неделю на учебник по Ember?
Итак, здесь создаётся вычисляемое свойство с именем ‘fullName’, которое обновляется при изменении ‘firstName’ или ‘lastName’. Его значением становится результат возврата функции.
import discourseComputed from "discourse-common/utils/decorators";
import User from "discourse/controllers/user";
export default Ember.Component.extend(User, {
classNames: ["restrict-pms"],
myFunThing: "это текст в моём весёлом элементе",
@discourseComputed("myvalue")
someThing(myvalue) {
return true;
}
});
Template.registerHelper("log", function(something){
console.log(something);
});
Кажется, я спрашиваю (возможно, это звучит бессмысленно), что можно написать в assets/javascripts/discourse/templates/connectors/user-profile-controls/add-link-to-subscription.hbs, чтобы иметь доступ к myFunThing или myvalue?
Вышеприведённый код находится в файле assets/javascript/discourse/components/user-private-messages.js.es6.
Я хочу иметь возможность использовать {{myFunThing}} и/или {{myvalue}} в файле assets/javascripts/discourse/templates/connectors/user-profile-controls/add-link-to-subscription.hbs, но они не определены.
Я полагаю, что один из этих файлов находится не в том месте (я вижу, что другой текст в вышеуказанном файле hbs отображается на странице /u/username/summary, просто без myFunThing), либо я импортирую не тот класс и/или расширяю не тот компонент.
Извини, Джей, я немного занят, но вот что ты можешь сделать: просто подключи свой компонент в файле hbs внутри connector.hbs, например:
{{my-component}}
(добавь аргументы по необходимости)
Затем он будет искать my-component.hbs в папках templates/components и /components.
В качестве альтернативы ты должен иметь возможность задать свойство в файле JS внутри директории connector, но для моего стиля я предпочитаю первый подход.