Странное поведение контекста пространства имен с кнопкой JS на ленте Dynamics 365 - PullRequest
0 голосов
/ 04 августа 2020

У меня есть следующий код Javascript, написанный для моего события нажатия кнопки на ленте Dynamics 365.

var SampleNamespace = SampleNamespace || {};
SampleNamespace = {
 someVariable : 'xyz',
 clickMeFromRibbon: function(){
  // this = window in classic UI | this.iWillDoSomething() - Error
  // this = SampleNamespace in Modern UUI | this.iWillDoSomething() - Works fine
 },
 iWilDoSomething : function(){
  // Doing some other helper operations
 }
}

при нажатии кнопки на ленте Я указал следующую функцию для вызова

SampleNamespace.clickMeFromRibbon

любая идея, почему ссылка на this отличается и как мы можем решить это с эффективным пространством имен, работающим в обеих средах?

PS: Я пробовал несколько типов разных пространств имен, доступных в javascript, но все это привело в том же номере.

1 Ответ

1 голос
/ 05 августа 2020

Вы можете использовать другой способ работы с пространствами имен, который мне подходит:

var SampleNamespace = (function(){
    var someVariable = "xyz";

    function clickMeFromRibbon(){
        //you can call iWilDoSomething from here without using namespaces
    }

    function iWilDoSomething(){
    }

    return {
        clickMeFromRibbon: clickMeFromRibbon,
        iWilDoSomething: iWilDoSomething
    };
})();

//Also SampleNamespace.clickMeFromRibbon and SampleNamespace.iWilDoSomething are available externally
...