javascript - 如何为 angularjs 编写自定义 'row' 和 'col' 元素

标签 javascript angularjs

我正在尝试围绕此处概述的网格元素编写一些 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/

相关文章:

javascript - HTML Div 转换为带背景图像的图像 Html2canvas

javascript - 使用 angularjs 将表中的 id 发送到 Controller

javascript - Angular 模板可以调用返回 promise 的函数吗

javascript - 我有悬停效果的问题

angularjs - 如何断言某个元素已获得焦点?

angularjs - 将变量传递给 Angular 指令

ios - Angularjs http.jsonp iOS9 404

javascript - 如何更改数据库/文件二进制路径?

javascript - 如何在 beforeSend 事件中修改 ajax Post 数据?

javascript - 将二进制文件转换为 JavaScript 字符串,然后转换为 Uint8Array