我正在尝试围绕此处概述的网格元素编写一些 dsl:http://foundation.zurb.com/docs/grid.php
基本上我想做的是
<row>
<column two mobile-one>{{myText}}</col>
<column four centered mobile-three><input type="text" ng-model="myText"></input></col>
</row>
转化为:
<div class="row">
<div class="columns two mobile-one">{{myText}}</div>
<div class= "columns four centered mobile-three"><input type="text" ng-model="myText"></input></div>
</div>
理想情况下,我希望写一些可以任意嵌套的东西:row -> col -> row -> col -> row.....
我无法正确完成第一步 - 嵌套元素,因为我不太清楚如何在不严重影响编译过程的情况下将子元素放入另一个模板。
var app = angular.module('lapis', []); app.directive('row', function(){ return { restrict: 'E', compile: function(tElement, attrs) { var content = tElement.children(); tElement.replaceWith( $('', {class: 'row',}).append(content)); } } });
只是什么都不做。此处显示失败的尝试 - http://jsfiddle.net/ZVuRQ/
请帮忙!
最佳答案
I was hoping not to use ng-transclude because I found that it added an additional scope.
这是一个不使用 ng-transclude 的指令:
app.directive('row', function() {
return {
restrict: 'E',
compile: function(tElement, attrs) {
var content = angular.element('<div class="row"></div>')
content.append(tElement.children());
tElement.replaceWith(content);
}
}
});
您可能想使用 tElement.contents() 而不是 tElement.children()。
关于javascript - 如何为 angularjs 编写自定义 'row' 和 'col' 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14106554/