Dynamics 365 功能区按钮中 JS 的奇怪命名空间上下文行为
Weird Namespacing context behavior with JS in Dynamics 365 Ribbon button
我为我的 Dynamics 365 功能区按钮单击事件编写了以下 Javascript 代码。
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 中可用的多种类型的不同命名空间,但都导致了同样的问题。
您可以使用不同的方式来处理对我来说很好用的命名空间:
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
我为我的 Dynamics 365 功能区按钮单击事件编写了以下 Javascript 代码。
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 中可用的多种类型的不同命名空间,但都导致了同样的问题。
您可以使用不同的方式来处理对我来说很好用的命名空间:
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