私は AngularJS の初心者です。
jQuery JScrollPane (JScrollpane.kelvinluck.com) を div に適用するカスタム ディレクティブを作成しようとしています。
私は次のhtmlコードを持っています:
<scrollPane> ------> WRONG
<div scroll-pane> -----> RIGHT
<ul>
<li data-ng-repeat="task in tasks">
<div class="task-element">
<div class="name">{{task.display_name}}</div>
<div class="text">{{task.min_description}}</div>
</div>
</li>
</ul>
</scrollPane>
および次のディレクティブ:
angular.module('myApp', []).directive('scrollPane',function() {
return {
restrict:'A',
template: '<div></div>',
link: function (scope, elm, attrs) {
console.log("in directive");
element.addClass('scroll-pane');
element.jScrollPane({showArrows: true,autoReinitialise:true });
}};
});
主な問題は、テンプレートの html が<scrollPane>
要素全体を上書きし、ng-repeat<li>
がまったく表示されず、最終的な html から削除されることです。
内側の html を html でラップするディレクティブを作成する正しい方法は何ですか (私の例では div とclass='scroll-pane' )
になります。どこに : を挿入する必要があり
$('.scroll-pane').jScrollPane();
ますか?
ヘルパーに感謝します。
更新: 上記のコードが機能しないことが判明しました。問題は HTML にありました。これは、ディレクティブで restrict:"A" を使用する必要があるためです。( http://www.befundoo.com/university/tutorials/angularjs-directives-tutorial/のヒントに感謝)
jScrollPaneを適用するには、ディレクティブ内で使用しました
element.jScrollPane({showArrows: true,autoReinitialise:true });
すべてがうまくいきましたが、1つの問題が開いています.cssの回避策として、ng-repeatでタスクの長さを取得して、divの固定高さを設定する必要があります。デバッグ中に、まだレンダリングされていないことがわかりました。どうすれば、ng-repeat がデータを取得するまで待つことができますか? (サービスを使用)。