【问题标题】:jsTree, JSON and MVC3 objects. How to structure datajsTree、JSON 和 MVC3 对象。如何构造数据
【发布时间】:2012-03-04 21:15:33
【问题描述】:

我一直在玩 JsTree 和 MVC3。我可以成功调用 MVC3 方法并取回 JSON 以加载基本的 JsTree,这样我就可以做非常基础的工作了。我不明白的是更复杂的数据结构,主要用于等待节点上需要的额外数据,并让树对其中的一些数据采取行动。

我的数据是 NodeText (string) - 要显示的文本

ItemStatus (enum) - 用于在树上设置颜色等

ItemType (enum) - 控制什么可以拖放到什么上

RelatedIDs (List ID 是一个下面描述的结构) - 当一个项目被丢弃时使用

PrimaryItemID (ID and is a struct) - 用于右键菜单和数据库项目识别,以及从被丢弃的项目中应用相关ID的信息。

SecondaryItemID (ID and is a struct) - 用于右键菜单和数据库项目识别,以及从被删除项目中应用相关ID的信息。

ID struct is
ID (long) 
IDType (enum)

从我的阅读中,我了解到 JSON 数据布局可能已经改变,还有属性数据和元数据,但我不太清楚应该去哪里以及应该创建什么 MVC3 模型对象来将这些数据序列化为 JSON树可以理解。我真的很想在第一时间把基本数据结构弄好,这样我就不必重写一堆代码了。

如果我遗漏了任何必需的信息,请告诉我。

【问题讨论】:

    标签: json asp.net-mvc-3 jstree


    【解决方案1】:

    这是我一直用于 JSTree 的数据模型。你必须把它放在 json 格式中。

    node.data.attr.href          <a> tag within <li> href
                  .other-a-attr  any other attribute you want on the <a>
             .title              visible title of node  
             .icon               optional image_file for icon
        .state                   controls icon, "open", "closed" or "" = default
        .arrt.id                 node id on the <li>
             .nType              type_attr for UI and types plug ins - MUST SET using type_attr in Types plugin default is ref
             .title              node title (not visible)
             .other-li-attr      any other attritubes you want on the <li> 
    

    我必须同意 JSTree 的学习曲线非常陡峭,对于我们这些新手来说,从文档中获取这一点并不容易。

    我仍然不确定 node.arrt.title 的用途。这不是您在树中看到的标题。 node.data.title 是树中显示的那个。

    可能还有其他的我还没有弄清楚。如果你弄清楚了,请告诉我。

    【讨论】:

    • 谢谢!这是对我所见过的所有标签和值的最佳描述,我昨晚自己花了很多时间处理其中的大部分内容。希望我看过这篇文章。另外值得注意的是,在事件中 .arrt.other-li-attr 非常容易访问。我还没有弄清楚如何在数据下处理同样的事情。
    • @seer 我想我们中的很多人都花了几个小时来拔头发。 JSTree 是一个很好的资源,但要了解如何使用它的细节需要很多时间。
    • 有点离题但是你玩过DND吗?试图拥有两棵树,其中一棵树是项目,另一棵树是命令。将命令放在项目上以针对该项目运行该命令。命令不会被移动或复制。我尝试了在尝试之间谈到的节点移动内容,但发现它总是复制或移动节点,所以我将尝试 DND。你知道这是否会按我的意愿工作。只想触发一个javascript函数。我认为应该可以,但如果您知道它可以节省我数小时的测试时间:)
    • @seer 我从来没有这样使用过两棵树。你用命令和项目做什么是一个有趣的概念。我会发布一个关于它的新问题,以便其他人看到它。希望你能得到它的工作。我知道你到了那里我想看看。
    • 对于那些对我刚刚在我上面的评论中提出的问题感兴趣的人,这篇文章涵盖了它。 groups.google.com/group/jstree/browse_thread/thread/…
    【解决方案2】:

    后端使用什么语言并不重要。在您的回复中,JSON 必须以某种方式查看。基本的 jsTree 可接受的 JSON 格式是:

    [
       {
          "data" : {
             "icon" : "/path/to/icon.png",
             "title" : "name of the node"
          },
          "attr" : {
             "rel" : "type defined by types",
             "title" : "node title",
             "id" : "Node id"
          },
          "state" : "closed"
       }
    ]
    

    显然,这只是一个您可以尝试的示例。当然,您可以将null 放在图标中,或者完全放弃它。 rel 必须由 types 插件定义,但也是可选的,标题也是。

    【讨论】:

    • 这自然是一个数组,你可以根据需要添加任意数量的对象。
    • 那么你怎么知道在 data 和 attr 中放什么?更重要的是,我在确定我需要将诸如 DND、类型、上下文菜单等内容放在哪里工作并将我需要的信息传递给我或者它只是返回整个节点时遇到问题。
    • 数据是固定的,标题是节点的标题。在 attr 你可以放任何你想要的东西,人们广泛使用的常见选项是rel/id/title,但你可以根据需要添加。您应该阅读有关每个插件如何使其工作的文档。通常你会得到一个数据对象(data.rslt.o),你可以操作并将你想要的东西发送回服务器。
    • “数据是固定的”完美你在哪里找到的?据我所知,它听起来像 data 和 attr 都可以添加,并且如果它不需要是一个 pysical attr,那么该数据是推荐的,但我不确定。另外,当您说 attr 时,您是指直接在节点上的那个还是在 data 下的 attr,因为有两个。这让我感到困惑,数据似乎有多个位置,但没有说明什么是什么,是返回给 DND、上下文菜单等函数的节点或数据或属性。
    • 好吧,阅读文档并检查 jsTree 源代码。基本上,jsTree 期望每个节点有两种 JSON 格式(非常相似)。无论如何,基本上所有东西都返回了。你得到一个节点对象,你可以访问任何东西。访问对象的 data 部分可能会更复杂(例如使用纯 javascript,检查 firebug),而使用 attr 非常简单,即在 DND 或上下文菜单插件中:data.rslt.o.attr("id")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    相关资源
    最近更新 更多