• directive talks to controller


    <!DOCTYPE html>
    <html ng-app="demo">
    <head>
        <title>directive talks to controller</title>
        <script src="angular.min.js" type="text/javascript"></script>
    </head>
    <body ng-controller="demoController">
        <div enter>{{name}}</div>
    </body>
    <script>
        var demo = angular.module("demo",[]);
        demo.controller("demoController", function ($scope) {
            $scope.name = "Jackey works hard";
            $scope.show = function () {
                console.log("hei");
            };
        });
        demo.directive("enter", function () {
            return {
                restrict: "A",
                link: function (scope, element, attrs) {
                    element.bind("mouseenter", function () {
                        scope.show();
                    });
                }
            };
        });
    </script>
    </html>

    directive指令里面link参数的scope,可调用外面的方法

    修改一下,可用$apply调用方法

    <!DOCTYPE html>
    <html ng-app="demo">
    <head>
        <title>directive talks to controller</title>
        <script src="angular.min.js" type="text/javascript"></script>
    </head>
    <body ng-controller="demoController">
        <div enter>{{name}}</div>
    </body>
    <script>
        var demo = angular.module("demo",[]);
        demo.controller("demoController", function ($scope) {
            $scope.name = "Jackey works hard";
            $scope.show = function () {
                console.log("hei");
            };
        });
        demo.directive("enter", function () {
            return {
                restrict: "A",
                link: function (scope, element, attrs) {
                    element.bind("mouseenter", function () {
                        scope.$apply("show()");
                    });
                }
            };
        });
    </script>
    </html>

    再修改一下,可使用attrs将方法传进来

    <!DOCTYPE html>
    <html ng-app="demo">
    <head>
        <title>directive talks to controller</title>
        <script src="angular.min.js" type="text/javascript"></script>
    </head>
    <body ng-controller="demoController">
        <div enter="show()">{{name}}</div>
    </body>
    <script>
        var demo = angular.module("demo",[]);
        demo.controller("demoController", function ($scope) {
            $scope.name = "Jackey works hard";
            $scope.show = function () {
                console.log("hei");
            };
        });
        demo.directive("enter", function () {
            return {
                restrict: "A",
                link: function (scope, element, attrs) {
                    element.bind("mouseenter", function () {
                        scope.$apply(attrs.enter);
                    });
                }
            };
        });
    </script>
    </html>

    这个例子可以清楚地看到link3个参数的作用

  • 相关阅读:
    20201120-1 每周例行报告
    20201112-1 每周例行报告
    20201105-1 每周例行报告
    20201029-1 每周例行报告
    20201022-1 每周例行报告
    20201015-3 每周例行报告
    20201008-1 每周例行报告
    20200924-1 每周例行报告
    使用代理服务器的方式在一个端口上运行多个服务
    只出现一次的数字
  • 原文地址:https://www.cnblogs.com/lihaozhou/p/3681946.html
Copyright © 2020-2023  润新知