0

由于我不习惯这种编程/数据管理方式,因此很难理解。

我现在要做的就是将通过微风返回的 json 对象传递到 dynatree 或 fancytree 中。

在线存在的示例都假设树将通过“initajax”进行ajax调用,或者需要一些奇怪的复杂自定义绑定处理程序来传递各种对象:

ko.bindingHandlers.dynatree = {
    update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
        setTimeout(function () {
            $(element).dynatree({
                noLink: true, // noLink is required to 'unlock' the checkboxes
                minExpandLevel: 2
            })
            // the timeout value shows the correct knockout bindings BEFORE dynatree kicks in.
        }, 1000);
    }
}

这一切对我来说似乎太复杂了,当然?我已经有了 json 对象,我知道这是有效的。如果我使用敲除“foreach”将其绑定到一些普通的 html,那么所有数据都显示得很好。在我看来,我需要做的就是初始化树 div 并将 json 对象传递给它......只是我不知道该怎么做!

我在这里尝试使用 jsfiddle:http: //jsfiddle.net/Ebram/UhA3m/5/但 chrome 开发人员工具抱怨当自定义绑定处理程序触发时元素没有“dynatree”方法。它传入了一个“ul”元素,这可能是问题所在——当然它应该传入树 div,而不是 ul 元素?

无论如何,如果有人能指出我正确的方向,我将不胜感激。当我使用 John Papa 的 SPA 方法时,我也不确定将任何单独的 js 初始化代码放在哪里,因为底层视图模型不适合我进行 $(#tree).dynatree 初始化类型调用,是吗?我必须承认我还没有意识到这一点。

我想我正在寻找的只是“一旦这个视图的视图模型完成加载并且完成了敲除绑定,初始化 dynatree div 并将这个 json 对象传递给树”如果这有意义的话伪代码?

4

1 回答 1

0

希望我可以为您指出大致正确的方向。

看起来 dynatree 也可以从文件和 AJAX 请求中获取 JSON。在此示例中延迟加载,如果您查看源代码,则有:

    // In real life we would call a URL on the server like this:
...
      // .. but here we use a local file instead:

将数据存储在文件中以获取数据似乎非常浪费。现在我们知道它在获取数据方面有点灵活,让我们看看它在哪里使用数据,也许我们可以让它使用局部变量。让我们看看它在哪里加载它

查看 dynatree 源代码,有一个与appendAjax. (我的源代码中的第 1774 行。)目前时间有点短,但我会找到它从哪里获取 JSON 以及它如何处理它。也许您可以在外部做同样的事情,或者修改处理ajaxOptions以使用 JSON 获取变量。

于 2013-07-31T18:25:26.453 回答