Как динамически изменить свойства MenuItem (например, метки)? - PullRequest
0 голосов
/ 02 апреля 2020

Мне нужно динамически изменять свойства класса MenuItem. Я создаю контекстное меню для моего настольного приложения Electron js.

Это объявление меню для контекстного меню, вызываемого правой кнопкой мыши.

const menu = new Menu();
menu.append(new MenuItem({id: 'open', label: 'Open File Location', click() { console.log('item 1 clicked') }}));
menu.append(new MenuItem({id: 'search', label: `Search in Google `, click() { console.log('item 2 clicked') }}));

Затем я изменяю свойства MenuItem .

let search = menu.getMenuItemById('search');
search.label = `Search *new text* in Google`;
menu.popup({window: remote.getCurrentWindow()});

Я хочу достичь Search *new text* in Google в контекстном меню, но он по-прежнему показывает Search in Google

Электрон Js в документах говорится, что контекстное меню свойства могут быть изменены динамически. Но как? Справка: Электронные документы по свойствам MenuItem

Пока я находил решение для этого, я узнал, что этого можно добиться, повторно инициализировав меню (хотя это было для меню). Но я не хочу этого делать.

1 Ответ

1 голос
/ 03 апреля 2020

Документы на сайте в настоящее время устарели. PR # 21823 внес изменения в документацию, чтобы отметить, что метки не могут быть динамически изменены.

Этот PR, в свою очередь, ссылается на Выпуск # 12633 (комментарий) , где указано, что в настоящее время это невозможно из-за того, как меню спроектированы.

Наш код меню в настоящее время не записан как динамический c (и, следовательно, допускает это), и, учитывая, что нам нужно будет перестроить нашу архитектуру все меню на этом этапе, я не верю, что мы готовы сделать это. В этом случае я собираюсь закрыть это на wontfix, но я дам вам знать, если что-то изменится в будущем!

Реинициализация меню может быть вашим лучшим выбором на данный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...