埋め込みウィジェット

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:5分
  • HTML テンプレート、サーバースクリプト、またはクライアントスクリプトにウィジェットを埋め込みます。

    HTML テンプレートへのウィジェットの埋め込み

    <widget></widget> 要素を使用して、ウィジェットを HTML テンプレートに埋め込みます。埋め込むウィジェットの ID をパラメーターとして渡します。
    <div>
        <widget id="widget-cool-clock"></widget>
    </div>
    ウィジェットにオプションスキーマがある場合は、JSON 形式でインスタンスオプションを定義できます。
    <widget id="widget-cool-clock" options='{"zone": "America/Los_Angeles","title": "San Diego, CA"}'></widget>
    または、ウィジェットサーバースクリプトでオプションを定義することもできます。
    HTML テンプレート
    <widget id="widget-cool-clock" options='data.clockOptions'></widget>
    サーバースクリプト
    (function() {
      data.clockOptions = {"zone": "America/Los_Angeles","title": "San Diego, CA"};
    })();

    クライアントスクリプトへのウィジェットの埋め込み

    spUtil.get() を使用して、クライアントスクリプトでウィジェットモデルを取得します。
    spUtil.get("widget-sc-cat-item", {sys_id: "your_catalog_item_sys_id"}).then(function(response) {
        c.catalogItemWidget = response;
    });

    ウィジェットクライアントスクリプトで spUtil クラスを使用する場合は、そのクラスをクライアントスクリプト関数に挿入する必要があります。次の例では、クールクロックウィジェットを埋め込みます。

    クライアントスクリプト
    function(spUtil) {
        var c = this;
        spUtil.get("widget-cool-clock").then(function(response) {
                c.myClockWidget = response;
        });
    }
    HTML テンプレート
    <sp-widget widget="c.myClockWidget"></sp-widget>

    サーバースクリプトへのウィジェットの埋め込み

    サーバースクリプトでウィジェットモデルを取得するには、 $sp.getWidget() を使用します。
    data.catalogItemWidget = $sp.getWidget("widget-sc-cat-item");

    次の例では、クールクロックウィジェットを埋め込みます。

    サーバースクリプト
    (function() {
        var coolClockOptions = {"zone": "America/Los_Angeles","title": "San Diego, CA"}
        data.coolClockWidget = $sp.getWidget('widget-cool-clock', coolClockOptions);
    })();
    HTML テンプレート
    <sp-widget widget="data.coolClockWidget"></sp-widget>

    ウィジェットモデルプロパティ

    ウィジェットモデルが別のウィジェット内から呼び出されると、HTML テンプレート、クライアントスクリプト、およびリンク関数がsp_widgetレコードと同じようにロードされます。data プロパティは、ウィジェットサーバースクリプトの実行結果です。サーバー上のデータオブジェクトに配置したものはすべて、クライアント上のデータオブジェクトで使用できます。

    プロパティ名 タイプ 説明
    client_script 文字列 ウィジェットクライアントスクリプトフィールド。
    css 文字列 ウィジェットの SASS フィールドからのコンパイル済み CSS 出力。
    データ オブジェクト ウィジェットサーバースクリプトのキーと値を含むデータオブジェクト。
    依存関係 アレイ ウィジェットの実行前にロードするサードパーティライブラリ。
    オプション オブジェクト ウィジェットを初期化するために使用されるオプション。
    template 文字列 ウィジェットの HTML テンプレートフィールド。

    カスタムオプションを使用してウィジェットを複数回埋め込む

    カスタムオプションを使用して、クールクロックウィジェットを複数回埋め込みます。

    始める前に

    必要なロール:admin または sp_admin

    このタスクについて

    クールクロックウィジェットの複数のインスタンスを埋め込むウィジェットを作成し、それぞれ異なるタイムゾーンとタイトルを設定します。ウィジェットエディターでクールクロックウィジェットを開くと、HTML テンプレートとクライアントスクリプトで参照されるウィジェットオプションが表示されます。

    図 : 1. [オプション] が強調表示されたクールクロックウィジェット
    c.options.title、c.options.c_color、c.options.zone が強調表示されたクールクロックウィジェット

    手順

    1. 埋め込みクロックという名前のクールクロックウィジェットのクローンを作成します。
    2. コードブロックを次のように置き換えます。
      HTML テンプレート
      <div class="panel panel-default">
        <div class="panel-heading">Time across the US</div>
        <div class="panel-body">
          <div class="row">
            <div class="col-sm-3" ng-repeat="myClock in c.data.clocks">
              <sp-widget widget="myClock"></sp-widget>
            </div>
          </div>
        </div>
      </div>
      CSS
      .panel {
          margin-top: 10px;
      }
      クライアントスクリプト
      function() {
          // nothing to do here...
      }
      サーバースクリプト
      (function() {
          var options = [
              {zone: "America/Los_Angeles", title: "San Diego"},
              {zone: "America/Denver", title: "Denver"},
              {zone: "America/Chicago", title: "Chicago"},
              {zone: "America/New_York", title: "New York"}
          ];
      
          data.clocks = [];
          for (var i in options) {
              data.clocks.push($sp.getWidget("widget-cool-clock", options[i]));
          }
      })();

    タスクの結果

    埋め込みクロックウィジェットの時計の各インスタンスは、異なるタイムゾーンで表示されます。

    図 : 2. サンプルクロックオプション
    4 つの異なるタイムゾーンを持つ 4 つの埋め込みウィジェットを備えた埋め込みクロック