私はこのスタイルのプログラミング/データ管理に慣れていないので、これを理解するのは本当に難しいです。
現時点で私がやろうとしているのは、そよ風を介して返された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 オブジェクトをツリーに渡す」という行に沿ったものだけだと思います。疑似コード?