Per aggiungere questo è necessario aggiungere un directive.
Quindi, con solo jQuery, si avrebbe:
JS
$('#source').quicksand($('#destination li'));
HTML
<ul id="source">
<li data-id="iphone">iOS</li>
<li data-id="android">Android</li>
<li data-id="winmo">Windows Phone 7</li>
</ul>
<ul id="destination" class="hidden">
<li data-id="macosx">Mac OS X</li>
<li data-id="macos9">Mac OS 9</li>
<li data-id="iphone">iOS</li>
</ul>
Con angolare si potrebbe fare:
JS
yourApp.directive('jqQuicksand', function(){
var linkFn = function(scope,element,attrs){
// element here = $(this)
// bind your plugin or events (click, hover etc.) here
element.quicksand($(attrs.jqQuicksand));
}
return {
restrict:'A',
scope: {},
link: linkFn
}
});
HTML
<ul data-jq-quicksand="#destination li" id="source">
<li data-id="iphone">iOS</li>
<li data-id="android">Android</li>
<li data-id="winmo">Windows Phone 7</li>
</ul>
<ul id="destination" class="hidden">
<li data-id="macosx">Mac OS X</li>
<li data-id="macos9">Mac OS 9</li>
<li data-id="iphone">iOS</li>
</ul>
Nota, questo non è testato, ma dovrebbe essere ok.
come con qualsiasi altro plugin di manipolazione DOM, è necessario inizializzarlo all'interno di una direttiva angolare. Avvolgi il tuo codice in '$ timeout' se angular creerà gli elementi' LI' come con 'ng-repeat' – charlietfl
@charlietfl, cosa? – arg20
cosa è 'cosa? ' – charlietfl