Публикация

Изменение доступности кнопки без обновления реестра (реализация сообщений sandbox)

Вопрос

По поводу изменения доступности кнопки без обновления реестра - подскажите, пожалуйста, где можно посмотреть реализацию сообщений sandbox?

Ответ

Примеров реализации сообщений в нашей системе довольно много. Самым ярким примером могут служить модули BasePageV2 и BaseSectionV2. В этих модулях при инициализации вызывается метод subscribeSandboxEvents(), который выполняет подписку на сообщения sandbox.

Например, в модуле BaseSectionV2 выполняется подписка на сообщение [CardChanged], и когда модуль получает это сообщение, он устанавливает изменённое значение соответствующему атрибуту. Само же сообщение отправляет (публикует) модуль BasePageV2 при вызове метода publishPropertyValueToSection(). В свою очередь, метод publishPropertyValueToSection() вызывается при изменении некоторых атрибутов модели карточки редактирования.

Вы можете поступить похожим образом. Например, в методе init() Вашей карточки редактирования (CasePage) подписаться на изменение поля [ServiceCategory]:

init: function() {
    this.callParent(arguments);
    this.on("change:ServiceCategory", function(model, value) {
        this.publishPropertyValueToSection("CurrentServiceCategory",value);
    }this);
}

Таким образом, при изменении поля [ServiceCategory] карточки новое значение будет записываться в атрибут [CurrentServiceCategory] раздела CaseSection.

После этого в разделе Вы сможете получить значение текущей категории, обратившись к атрибуту [CurrentServiceCategory]:

isEnableButtonColumbus: function() {
    var serviceCategory = this.get("CurrentServiceCategory");
    if (!serviceCategory) {
        // Ваш код
    } else {
        return (serviceCategory.value ===UsrConsts.ServiceCategory.Dynamix);
    }
}

 

Нравится

Поделиться

0 комментариев
Показать все комментарии