controller

参数

git代码

相关参数

  • controller在组件中是一个函数,他有四个参数,分别是$scope、$element、$attrs、$transclude
  • 我们在使用中可以打印这四个参数(注意$transclude使用的时候必须开启transclude:true)
  • html
<hello-world name1="hello" name2="world"></hello-world>
  • js
controller:function($scope,$element,$attrs,$transclude){
  console.log("$scope",$scope);
  console.log("$element",$element);
  console.log("$attrs",$attrs);
  console.log("$transclude",$transclude);
}
  • 打印的效果图
    在这里插入图片描述

参数的作用

通过打印我们大致可以总结一下规律

  1. $scope:指令当前的作用域,所有在scope上绑定的属性方法,在指令中都可以随意使用
  2. $element:使用指令的当前元素
  3. $attr:使用指令当前元素上的属性
  4. $transclude:我们发现他是一个函数,它主要是用于克隆和操作dom,但是我们并不推荐用它来操作dom

$transclude

完成需求,想组件中添加一个dom标签

代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
  </head>
  <body>
    <div ng-app="myApp" ng-controller="myCtrl">
      <h1>{{indexName}}</h1>
      <!-- 自定义组件 -->
      <hello-world name1="hello" name2="world"></hello-world>
    </div>

    <script>
      var app = angular.module("myApp", []);
      app.controller("myCtrl", function ($scope) {
        $scope.indexName = "主页";
        $scope.childName = "父组件自定义组件名称"
      });
      app.directive("helloWorld",function(){
          return {
            restrict:'ECMA',
            template:`
            <div>
              <h2>{{childName}}</h2>
              <div id="box"></div>
            </div>
            `,
            transclude:true,
            controller:function($scope,$element,$attrs,$transclude){
              $transclude(function(clone){
                var ele = angular.element("<div>我是新生儿</div>")
                console.log("clone",clone);
                console.log("ele",ele);
                ele.attr("id","child")
                var boxEle = document.getElementById("box")
                boxEle.append(ele[0])
              })
            }
          }
      })
    </script>

  </body>
</html>

效果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值