Impossible de lire PluginName de undefined


1

J'essaie actuellement de créer un plugin Alchemy qui permettra à mes utilisateurs de choisir un point de focus sur une image. C'est ainsi que nous pouvons ajuster le comportement de redimensionnement sur ce point de focus.

Mes extensions d'alchimie fonctionnent sur ComponentView avec un bouton RibbonToolbar. Ce bouton de la barre d'outils Ruban a besoin d'informations sur mes paramètres personnalisés. J'ai créé un wrapper de paramètres qui récupère tous mes paramètres personnalisés et les stocke afin que mon isEnabled puisse y accéder. Alchemy.Plugins [" ${PluginName}"] Api.getSettings est appelé dans un écouteur d'événement$ display "load" pour s'assurer qu'il est chargé avant de l'appeler.

Cependant, je reçois une erreur de suivi, et quand je regarde la trace de la pile, il semble que cela n'a rien à voir avec le code que j'ai écrit. Error location Stacktrace

Est-ce que quelqu'un a une idée de ce que je fait de mal?

La version Alchemy que j'utilise est la version 0.8.3.0 et je l'utilise/la teste sur un Web 8.1 propre avec seulement du DXA installé. En plus: Pour être plus clair sur ce que fait mon wrapper de paramètres, je l'ai mis ici. Le but de ce wrapper est que mes paramètres soient disponibles de manière synchrone au lieu de les faire passer par une promesse. Pour autant que je sache, le 'isAvailable'/'isEnabled' dans une commande n'acceptera pas une promesse comme valeur de retour.

(function (window, document) { 
  "use strict"; 
  window.Company = window.Company || {}; 
  window.Company.Plugins = window.Company.Plugins || {}; 
  window.Company.Plugins.ImageFocus = window.Company.Plugins.ImageFocus || {}; 
  window.Company.Plugins.ImageFocus = (function(window, document, self) { 
   var oAlchemy = window.Alchemy; 
   var oSettings = {}; 
   function fnOnInitializeFailed(error) { 
   console.error("There was an error", error); 
   } 
   function fnProcessSettings(settings) { 
   //Settings get processed in a more json friendly way. 
   } 
   function fnInitialize() { 
   try { 
    oAlchemy.Plugins[" ${PluginName}"].Api.getSettings() 
    .success(function(settings){ 
     fnProcessSettings(JSON.parse(JSON.stringify(settings))); 
    }) 
    .error(function(error){ 
     fnOnInitializeFailed(error); 
    }); 
   }catch (error){ 
    fnOnInitializeFailed(error); 
   }
   }
   function fnIsSchemaAllowed(tcmuri){ 
   return (oSettings && oSettings.schemas && oSettings.schemas[tcmuri]) || false; 
   }
   function fnGetFieldForSchema(tcmuri){ 
   return oSettings && oSettings.schemas && oSettings.schemas[tcmuri]; 
   }
   self.isSchemaAllowed = fnIsSchemaAllowed; 
   self.getFieldForSchema = fnGetFieldForSchema; 
   window.$ display.addEventListener("load", fnInitialize.bind(this)); 
   return self; 
  })(window, document, window.Company.Plugins.ImageFocus); 
})(window, document); 

Et de préciser encore plus. Le code où il se brise en ce moment (l'un dans la capture d'écran, est Alchemy Code généré Il ne est pas appelée par moi, il est juste là déjà

.
2

Alchemy inclut en fait une méthode dans son API pour récupérer les paramètres pour vous, ce qui devrait vous aider à éviter ce problème, et vous éviter d'avoir à utiliser une bibliothèque, si c'est tout ce que qwest fait pour vous. J'ai imaginé avec quelque chose comme ça devrait faire l'affaire pour vous

function getSettings() { 
   Alchemy.Plugins["${PluginName}"].Api.getSettings() 
    .success(function (settings) { 
    return JSON.stringify(settings); 
    }) 
    .error(function() { 
    console.log("There was an error", error.message); 
    }) 
    .complete(function() { 
    }); 
  } 
  0

Ouais je sais. Mon code utilise celui-là mais l'enveloppe. J'ai mis mon emballage dans la question initiale ci-dessus. 28 oct.. 162016-10-28 07:23:32