AngularJS-directive自定义指令与link绑定事件

简介: directive指令,link绑定事件($apply这种方式只需要改变页面的调用方法即可)/** * Created by GrandKai on 29/09/2016. */var app = angular.module("app", []);app.controller("foodCtrl", function ($scope) { $scope.loadMoreData = function () { alert("加载更过数据。

directive指令,link绑定事件($apply这种方式只需要改变页面的调用方法即可)

/**
 * Created by GrandKai on 29/09/2016.
 */
var app = angular.module("app", []);
app.controller("foodCtrl", function ($scope) {
    $scope.loadMoreData =  function () {
        alert("加载更过数据。。");
    }
    $scope.delData =  function () {
        alert("删除数据。。");
    }
});

app.directive("enter", function () {
    // 只有一个link函数可以直接返回function
    return function (scope, element, attrs) {
        element.bind("mouseenter", function () {
            // scope.$apply("loadMoreData()");
            scope.$apply(attrs.enter);//调用更叫灵活
        });
    }

});

app.directive("food", function () {
    return {
        restrict: "E", // 不写默认是A属性
        template: "hello angular",
        replace:true,//默认false,作用:取代food标签元素(页面不显示)
        scope: {},//需要清空scope
        controller: function ($scope) {
            $scope.foods = [];
            this.addApple = function () {
                $scope.foods.push("apple");
            };
            this.addOrange = function () {
                $scope.foods.push("orange");
            };
            this.addBanana = function () {
                $scope.foods.push("banana");
            }
        },
        link: function (scope, element, attrs) {
            element.bind("mouseenter", function () {
                console.log(scope.foods);
            });
        }
    }
});

app.directive("apple", function () {
    return {
        require: "food",
        // foodCtrl 指向food中定义的controller
        link: function (scope, element, attrs, foodCtrl) {
            foodCtrl.addApple();
        }
    }
});

app.directive("orange", function () {
    return {
        require: "food",
        // foodCtrl 指向food中定义的controller
        link: function (scope, element, attrs, foodCtrl) {
            foodCtrl.addOrange();
        }
    }
});

app.directive("banana", function () {
    return {
        require: "food",
        // foodCtrl 指向food中定义的controller
        link: function (scope, element, attrs, foodCtrl) {
            foodCtrl.addBanana();
        }
    }
});

html代码

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
    <meta charset="UTF-8">
    <title>todolist</title>
    <script src="js/angular.min.js"></script>
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
</head>
<body>

<div class="container" ng-controller="foodCtrl">
    <food apple banana orange>所有食物</food>
    </br>
    <food apple banana>所有食物</food>
    </br>

    <div enter>im here1</div>
    </br>
    <div enter="loadMoreData()">im here2</div>
    </br>
    <div enter="delData()">im here3</div>
</div>


<script type="text/javascript" src="food.js"></script>
</body>
</html>
目录
相关文章
|
7月前
|
JavaScript
AngularJS中的自定义指令:创建与使用技术详解
【4月更文挑战第27天】本文详细介绍了AngularJS中自定义指令的创建与使用。通过定义指令工厂函数并注册到模块中,可以创建自定义指令,如示例中的`myCustomDirective`。指令的属性(如`restrict`、`template`、`replace`)和方法(如`link`、`scope`)可定制其行为。在HTML中使用`restrict`指定的方式(如元素、属性等)来插入指令。遵循命名规范,避免直接DOM操作,使用隔离作用域和关注重用性与扩展性,能有效提升代码质量。自定义指令是AngularJS强大功能之一,有助于实现复杂DOM操作和组件复用。
|
JavaScript
Angular1.x的自定义指令directive参数配置详细说明
Angular1.x的自定义指令directive参数配置详细说明
|
JavaScript 前端开发
Angular 自定义指令 Tooltip
Yeah,关注我的读者应该知道,上一篇文章了解 Angular 开发的内容,我们已经概览了 Angular 的相关内容。在自定义指令的部分,我们已经能够实现编写,但是,在实际场景中,我们还需要标准化的管理。
Angular 自定义指令 Tooltip
|
数据安全/隐私保护