=================
まず最初に、私はこの AngularJs ビジネス (今日早く開始) に不慣れであり、おそらく物事を複雑にしすぎていると言いたいだけです。
そうは言っても、本題に取り掛かりましょうか。
次のjsFiddleがあり、html出力は次のとおりです。
<div ng-app="test" ng-controller="About" class="hex-grid clearfix ng-scope">
<div class="hex odd" ng-repeat="person in ledning">
<a href="">
<div class="inner">
<h3 class="ng-binding">Just a name</h3>
<hr class="grid-1 center">
<p class="ng-binding">a title</p>
</div>
<div class="hex-1">
<span class="after"></span>
</div>
<div class="hex-2">
<span class="after"></span>
</div>
<span class="after"></span>
</a>
</div>
<!-- and 5 times more -->
</div>
今、私が達成したいのはこれです - > http://jsfiddle.net/engstrumpan/yCv79/4/embedded/result/ .
これは、私が達成したいことを示すためだけの単純な html (AngularJs ではありません) です。この特定のレイアウトは<br />
、六角形3と5の後に挿入することによって実現されました。
そのようなレイアウトが必要な場合を想像してみてください
1 1 1 1
1 1 1 1 or even 1 1
1 1 1 1 1 1
1 1 1 1
1 1 1
1 1
1
これを実装するにはどうすればよいでしょうか。このディレクティブは複数回使用されるため、できるだけ一般的なものにしたいと考えています。
私がこれまでに試したことは次のとおりです
var app = angular.module('test', []);
app.controller('About', function ($scope) {
$scope.ledning = [
{
...
shouldBreak: true
}
});
app.directive('hexagon', function () {
var tmpl = '<div>
<!-- directive template snippet -->
</div>
<br ng-show="{{data.shouldBreak}}" />';
// rest of code
});
<br ng-show="{{data.shouldBreak}}" />
AngularJs が次のメッセージで例外をスローするため、これは機能しません。Template must have exactly one root element.
またcompile
、そのようにディレクティブをいじりますが、それ<br />
は最後の反復の後に挿入されるだけになります(リピーターが機能し終わった後)
var app = angular.module('test', []);
app.directive('hexagon', function () {
return {
...
compile: function($scope, el, attrs){
return function ($scope, el, attrs){
if($scope.data.shouldBreak !== undefined){
el.after('<br />');
}
};
}
}
});
ディレクティブに関してはドキュメントを読みましたが、私はただ愚かであるか、明らかなことを見逃しているので、助けてください。
ウォールオブテキストの終わりと、おそらく少しの睡眠でうまくいくでしょう。いわば明日馬に飛び乗ってください。