私はちょうどあなたにアイデアを与えるために、このソリューションを思いついて、本当にそれに取り組んでいない!
ここでは、ディレクティブを持っている:
var app = angular.module('app', [])
.controller("MainController", function(){});
app.directive('reorderDiv', function ($compile) {
return function (scope, elem, attrs) {
function shuffle(array) {
var currentIndex = array.length, temporaryValue, randomIndex;
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
elem.on('click', function() {
console.log('called');
var divs = elem.find('div');
console.log(divs);
divs = shuffle(divs);
var content = $compile(divs)(scope);
elem.append(content);
})
}
})
、ここではテンプレートです:
<html ng-app="app">
<head>
<script src="bower_components/angular/angular.js"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainController">
<div reorder-div>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
</body>
</html>
このディレクティブは何をするのでしょうか?私はディレクティブを適用してdivをシャッフルし、シャッフルして変更します。$compile
サービスを使用してscope
に対してコンパイルし、外側のdivの内容をシャッフルされたコンパイル済みのテンプルに設定します。
アウターダイブをクリックすると、コンテンツがシャッフルされていることがわかります。
がそれだろうあなたのページをどのように構築しているかを見ることができるようにショーコードを共有することは可能でしょうか? –
あなたは完全な解決策を提供するのに十分な情報を与えていませんが、あなたが何を記述しているかによって、これらのdivは角度によって生成されないので、カスタムディレクティブを書かない限り、このシャッフル操作に角度は関与しませんこれらのアイテムのレンダリングを引き継ぐ。ただし、このタスクを実行するには、プレーンなjavascriptやその他のjavascriptライブラリを自由に使用することができ、角度には影響しません。 – Claies
ありがとう@Claies! – olivier