Объект не создается с использованием шаблона модуля JavaScript в CRM 2011

0

Я разработал логику JavaScript в соответствии с шаблоном модуля для формы CRM 2011. Во время загрузки формы иногда я получаю предупреждение как 'Crm object undefined' но при обновлении (один или несколько) эта ошибка исчезает (работает плавно).

После довольно изощренной я все еще не могу понять, почему это происходит. Имеет ли это какое-либо отношение к модулю? потому onLoad функция onLoad просто отлично, но меня беспокоит то, что иногда объект Crm не создается.

var Crm = (function (FSX) {
    var xrm = {
        date: {
            setDate: function (sourceAttribute, targetAttribute) {
                // ... date setting logic ...
            }
        }
    }
    return xrm.date;
}(FSX));

function onLoad() {
    if (typeof Crm === 'undefined') {
        alert('Crm object undefined');
        return;
    }
    Crm.setDate("fsx_source", "fsx_target");
}
Теги:
dynamics-crm
dynamics-crm-2011
module-pattern

1 ответ

1
Лучший ответ

Я думаю, что проблема связана с объектом FSX. Где это загружено?

Если он не был загружен до того, как скрипт, определяющий ваш модуль, будет выполнен с ошибкой, а Crm будет неопределенным.

Существует красиво написана статья здесь о загрузке зависимых библиотек для формы CRM.

В нем предлагается ряд решений: 1) использовать RequireJs или HeadJs для динамической загрузки зависимых скриптов. 2) Загрузка библиотек путем включения их в команды ленты.

  • 0
    FSX создает в другом файле сценария, который загружается перед этим файлом. Как это возможно, что FSX не создан? Вы имеете в виду, что JavaScript также может работать ненормально?
  • 0
    Это не Javascript. Это связано с тем, как CRM загружает ваши скрипты. Скрипты загружаются асинхронно. Приведенный выше код можно запустить до полной загрузки FSX. Попробуйте загрузить скрипт FSX на ленте. Скрипты ленты загружаются первыми, и, надеюсь, ваш скрипт запустится после создания FSX. В статье, о которой я упоминал выше, есть информация о том, как вы можете это сделать.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню