2016-04-06 19 views
0

剣道のパネルに子供がいてもいろいろな人を見せたい。これはちょうどこのようになります: enter image description hereKnockoutJSでKendoPanelBarを展開できません - なぜですか?

「親」の人を展開する機会はありません。

あなたはボーダーの幅に密接に見れば、あなたは子供だと誰がいない者を確認することができます。あるいは言い換えればそれを説明させてください。すべての子どもも子供を持つことができ、国境の幅のために、あなたは誰が誰の子供か見ることができます。

親者がところで枠なしを有するものです。リストはKnockoutJSで動的に埋められます。

<ul data-role="panelbar" data-bind="template: { name: 'person-template', foreach: personList, callbackElementOnce: function() { return initKendoPanelBar($element) } }"> 
</ul> 

<ul data-role="panelbar" data-bind="template: { name: 'person-template', foreach: ascendantList, afterRender: initKendoPanelBar($element) }"> 
</ul> 

1つは親のためのものと1つは子供のためのものです。 initKendoPanelBar -functionは、通常、リストの中からPanelBarを行う必要があります。

function initKendoPanelBar(element) { 
      $(element).kendoPanelBar({ expandMode: "single" }); 
     }; 

しかし、それはありません。理由はわかりません。リストはあまりにも狂ったように見えないので、リストは既にPanelBarにフォーマットされていますが、私が言ったように、何かを展開することはできません。

ありがとうございます!

+0

'afterRender'に関数を渡すべきではありませんか?バインドで 'initKendoPanelBar'を呼び出しています。これは' undefined'を返します。しようとしました: 'afterRender:initKendoPanelBar'?ノックアウトは 'HTMLElement'の配列を渡すべきです – user3297291

+0

申し訳ありませんが、私はUの意味がわかりません。 AfterRenderにはinitKendoPanelBar関数が与えられます。それで、それは私が推測する関数が与えられています。 –

答えて

0

ノックアウトはあなたに結合foreachのレンダリング要素を持つ「何かを」する機会を与えてくれます。これは、バインディングテンプレートでどのように動作するかです:

data-bind="template: { 
    name: templateName, 
    foreach: items, 
    afterRender: afterRenderMethod 
}" 

afterRenderMethodは次のように動作し機能することがあります。

afterRender - foreachのブロックをドキュメントに複製され、挿入されるたびに呼び出されますforeachが最初に初期化されたときと、新しいエントリが後で関連付けられた配列に追加されたときの両方。ノックアウトは、コールバックに次のパラメータを指定します:(1)挿入DOM要素、それらが結合されてそれに対して(2)データ項目のアレイ

source、強調鉱山)

これはあなたのinitKendoBarは、要素の配列を受け入れることを意味しています。 afterRender: initKendoPanelBar($element)(これはすでに関数を呼び出す)が、そうのような:afterRender: initKendoPanelBar

function initKendoPanelBar(elements, data) { 
    // TODO: check nr of elements and select the right one(s) 
    $(elements[0]).kendoPanelBar({ expandMode: "single" }); 
}; 

あなたはデータバインドにそれを追加する方法は、ないそうのようです。 https://jsfiddle.net/sve52r7n/

P.S.を:あなたはそれをすべての作品は、このフィドルをチェックアウトする方法の例を与えることを

私は実際にcallbackElementOnceがどこから来るかは分かりません。私はこれまで見たことがありません。だから私はあなたの質問に答えることをためらった。私はあなただけtemplate結合およびafterRenderしかしでそれをうまくすることができるはずだと思います。

+0

私は今それを得ると思います。ありがとうm8。私は昨日試してみましたが、間違った方法で表示されていたため、調整を追加するだけでした。しかし、今は気をつけて、それは今働いている! :) –

関連する問題