zoukankan      html  css  js  c++  java
  • 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个参数的作用

  • 相关阅读:
    initctl 创建自己的JOB
    TortoiseXX 与TotalCommander (TC)的图标问题
    eclipse 与 tomcat 的那些路径
    把函数视为对象
    序列增量赋值的一个谜题: +=
    __new__ 和 __init__ 的区别
    Python 中 is 与 == 区别
    Flask 2.0.1 changes
    flask run 与 DispatcherMiddleware 不兼容处理
    waitress 部署 flask服务
  • 原文地址:https://www.cnblogs.com/lihaozhou/p/3681946.html
Copyright © 2011-2022 走看看