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>
目录
相关文章
|
8月前
|
JavaScript
Vue中的mixins和extend的区别是什么?
Vue中的mixins和extend的区别是什么?
109 0
|
8月前
|
前端开发 JavaScript API
Vue.Draggable 和 React Beautiful DND 有什么区别
Vue.Draggable 和 React Beautiful DND 是两个用于 Vue.js 和 React 的拖拽排序库。Vue.Draggable 提供 Vue 指令,适合 Vue 应用,支持列表排序和自定义数据处理,具有多种事件回调和配置选项。React Beautiful DND 则为 React 提供组件,能处理复杂拖拽场景,通过回调函数更新状态,配置选项包括限制拖拽范围和自定义动画。
|
8月前
|
JavaScript
Vue.directive的原理与日常使用
Vue.directive的原理与日常使用
81 0
|
JavaScript
Angular1.x的自定义指令directive参数配置详细说明
Angular1.x的自定义指令directive参数配置详细说明
|
JavaScript
学习Vue3 第二十七章(自定义指令directive)
但这里有一个需要注意的限制:必须以 vNameOfDirective 的形式来命名本地自定义指令,以使得它们可以直接在模板中使用。
316 0
学习Vue3 第二十七章(自定义指令directive)
|
监控 JavaScript 前端开发
Vue实现自定义指令(directive)及应用场景
Vue实现自定义指令(directive)及应用场景
225 0
Vue实现自定义指令(directive)及应用场景
snk
|
JavaScript 前端开发 开发工具
Angular vs React vs Vue vs UISYS 的事件绑定方式对比(新手必看)
web三大框架和 airoot uisys 都给大家介绍了一番。在事件绑定上都很棒,除了angluar 有些小伙伴会疑问,angluar为啥那么复杂,其实 angluar 设计之初就为大型企业项目考虑了很多,而且他的组件是最成熟的,React 和 Vue 毕竟不是做成google 那么复杂,所以angluar开始学的时候,感觉有点“脱裤子放屁的感觉”,但是你学深入了,你就明白作者的困境了。
snk
1306 0

热门文章

最新文章