2

現在、JSON を使用してダイナ ツリーをロードしています。

$(document).ready(function () {

  // Loads tree
  $("#TreeManGrp").dynatree({
    initAjax: {
      url: "/Terminals/Refresh/"
    },
    onActivate: function (node) {
      if (node.data.href) {
        window.open(node.data.href, "_self");
      }
    },
    persist: true,
    noLink: false,
    fx: { height: "toggle", duration: 200 }

  });
});

ツリーが DOM にロードされた後にアクティブ化されたノードがある場合は、アクティブ化されたノードを取得する必要があります。ドキュメントは、このアプローチを使用することを提案しています:

  // Loads tree
  $("#TreeManGrp").dynatree({
    initAjax: {
      url: "/Terminals/Refresh/",
      success: function (data) {
        alert("hi");
      }
    },
    onActivate: function (node) {
      if (node.data.href) {
        window.open(node.data.href, "_self");
      }
    },
    persist: true,
    noLink: false,
    fx: { height: "toggle", duration: 200 }
  });

しかし、これもうまくいきません。dynatree ソース ファイルを参照すると、次のように表示されます。

  if (ajaxOpts.success) {
        this.logWarning("initAjax: success callback is ignored; use onPostInit instead.");
      } 

私の質問は、代わりに onPostInit を使用する方法を知っている人はいますか?

4

1 に答える 1

3

私はそれを考え出した:

  // Loads tree
  $("#TreeManGrp").dynatree({
    initAjax: {
      url: "/Terminals/Refresh/"
    },
    onActivate: function (node) {
      if (node.data.href) {
        window.open(node.data.href, "_self");
      } else {
        ContextButtonSwitch(node.data.type, node.data.itemId);
      }


    },
    persist: true,
    noLink: false,
    fx: { height: "toggle", duration: 200 },
    onPostInit: function (isReloading, isError) {
      var node = $("#TreeManGrp").dynatree("getActiveNode");
      if (node) {
        ContextButtonSwitch(node.data.type, node.data.itemId);
      }
    }
  });
于 2013-02-11T12:32:19.980 に答える