有这样的一个场景,这里有一个表单:

<form role="form">
    ...
</form>

我们希望在form的外层动态包裹上一层。

有可能是这样:

<div ></script>里面,就像如下:

<script >
    <div class="well"></div>
</script>

<script >
    <div style="color:red"></div>
</script>

 

动态div如何包裹到form上呢?

--通过<form role="form" wrap-with="red">或<form role="well" wrap-with="red">

所以我们要写一个名称为wrapWith的directive.

 

var app = angular.module("app",[]);

app.controller("AppCtrl", function(){
    var app = this;
    app.people = [
        {"firstName":"", "lastName":""},
        ...
    ];
});

app.directive("wrapWith", function($templateCache){
    return {
        transclude: 'element',
        link: function(scope, element, attrs, ctrl, transclude){
            //获取模版内容
            var template = $templateCache.get(attrs.wrapWith);
            //把模版内容转换成angular元素
            var templateElement = angular.element(template);
            
            transclude(scope, function(clone){
                //clone,在这里是表单form
                element.after(templateElement.append(clone));
            })
        }
    }
})

以上,通过$templateCache可以获取到<script ></script>中的内容,然后通过angular.element转换成angular元素,最后使用link函数的transclude把form追加到模版后面。另外,transclude的属性值要设置成element。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-09-28
  • 2021-12-27
  • 2022-03-03
  • 2021-07-08
  • 2021-07-02
  • 2021-08-01
猜你喜欢
  • 2021-07-10
  • 2021-12-11
  • 2021-12-02
  • 2022-12-23
  • 2022-01-26
  • 2022-12-23
  • 2022-01-11
相关资源
相似解决方案