プラグイン名が未定義です


1

私は現在、ユーザーがイメージ上のフォーカスポイントを選択できるようにするAlchemyプラグインを作成しようとしています。これで、そのフォーカスポイントでのサイズ変更動作を調整できます。

私の錬金術の拡張機能は、ComponentViewでRibbonToolbarボタンを使って動作します。そのリボンツールバーのボタンは、私のカスタム設定からいくつかの情報が必要です。私はisEnabledがそれらにアクセスできるようにすべてのカスタム設定を取得して保存する設定ラッパーを作成しました。 Alchemy.Plugins [" ${PluginName}"] Api.getSettingsは$ display "load"イベントリスナーで呼び出され、呼び出す前にロードされていることを確認します。

しかし私はエラーが発生し、スタックトレースを見ると、書いたコードとは関係がないようです。 Error location Stacktrace

誰も私が間違って何をしたかのアイデアを持っていますか?

私が使用しているAlchemyのバージョンは0.8.3.0で、DXAのみをインストールしたクリーンなWeb 8.1でテストしています。


追加:私の設定ラッパーが行うことを明確にするために、ここに入れました。このラッパーの目的は、私の設定が約束を得るのではなく、同期的に使用できるようにすることです。私が知る限り、コマンドの 'isAvailable'/'isEnabled'は戻り値として約束を受け入れません。

(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); 

より一層明確にする:それは現時点での壊れたコード(スクリーンショットでは1を、錬金術がコードを発生させることは、私が呼び出されません、それはすでにそこにある

2

Alchemyには、あなたの設定を取得するためのAPIが実際に含まれています。これは、この問題を回避するのに役立ちます。また、qwestがあなたのためにやっているライブラリの場合は、ライブラリを使用しなくても済みます。このようなものであなたのためのトリックを行う必要があります写真を得た。

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

ええ、私は知っています。私のコードはそれを使用しますが、それを囲みます。上記の最初の質問に私のラッパーを入れました。 28 10月. 162016-10-28 07:23:32