0

私はこのスタイルのプログラミング/データ管理に慣れていないので、これを理解するのは本当に難しいです。

現時点で私がやろうとしているのは、そよ風を介して返されたjsonオブジェクトをダイナツリーまたはファンシーツリーに渡すことだけです。

オンラインに存在する例はすべて、ツリーが「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/しかし、クロム開発者ツールは、カスタム バインディング ハンドラーが起動したときに要素に「dynatree」メソッドがないことについて不平を言います。それは「ul」要素を渡していますが、それが問題になる可能性があります.ul要素ではなく、ツリーのdivで渡す必要がありますか?

とにかく、誰かが私を正しい方向に向けることができれば、私はそれを大いに感謝します. 私は John Papa の SPA 方法論を使用しているため、基になるビューモデルが $(#tree).dynatree 初期化を実行するのに適切な場所ではないため、別の js 初期化コードをどこに配置するかについても確信が持てません。タイプコールですね。私はまだこれについて理解していないことを認めなければなりません。

私が探しているのは、「このビューのビューモデルの読み込みが完了し、ノックアウト バインディングが完了したら、dynatree div を初期化し、この json オブジェクトをツリーに渡す」という行に沿ったものだけだと思います。疑似コード?

4

1 に答える 1

0

うまくいけば、おおよそ正しい方向に向けることができます。

dynatree は、AJAX 要求だけでなくファイルからも JSON を取得できるようです。この例のLazy Loadingでは、ソース コードを見ると、次のように表示されます。

    // 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 をどこで取得し、JSON で何をするかを見つけたいと思います。おそらく、外部で同じことを行うかajaxOptions、JSON で変数を取得するように処理を変更できます。

于 2013-07-31T18:25:26.453 に答える