Dynamics365功能区按钮中JS的奇怪名称间距上下文行为



我为Dynamics365 Ribbon按钮单击事件编写了以下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的引用不同吗?我们如何通过在两种环境中有效的名称空间来解决这个问题?

附言:我尝试过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

最新更新