==================
首先,我只想说我是这个 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 />');
}
};
}
}
});
我已经阅读了有关指令的文档,要么我很愚蠢,要么我错过了明显的东西,所以请帮助我。
walloftext 结束,也许睡一会儿就可以了。可以这么说,明天再骑马。