美文网首页
自定义指令

自定义指令

作者: 幸福幸福幸福 | 来源:发表于2017-05-02 17:15 被阅读4次

    一个定时器的指令例子:
    html

    <div ng-app="app" ng-controller="ctrl">
        <input type="text" ng-model="beginOption">
        <time-device time-begin="beginOption"></time-device>
    </div>
    

    js

    angular.module('app', [])
        .directive('timeDevice', function ($interval)
        {
            return {
                restrict: 'AE',
                replace: true,
                scope: {
                    timeBegin: '='
                },
                template: '<div><i>图标 </i>{{ time }} </div>',
                link: function ($scope, $element, $attrs)
                {
                    $scope.time = 0;//初始时间0
                    $scope.$watch('timeBegin', function (newV, oldV)
                    {
                        console.log('newV:' + newV);
                        console.log('oldV:' + oldV);
                        if (newV == 1)
                        {//表单值变为2时启动定时器
                            $scope.go = $interval(function ()
                            {
                                $scope.time++;
                            }, 1000)
                        }
                        else if (newV == 0)
                        {
                            //先保存到新变量里再重置
                            $scope.time = 0;
                            $interval.cancel($scope.go);
                        }
                    });
                }
            }
        })
        .controller('ctrl', function ($scope)
        {
            $scope.beginOption = 2;
        })
    

    效果很简单,当input值为1时,启动定时器,值为0时清除定时器,通过配置beginOption的值,来操作指令内定时器状态。
    需要注意的是directive内scope的配置,使timeBegin和beginOption的值双向绑定起来。这样在调用指令时可以不需要改动指令内部代码,只需要操作改变beginOption的值即可操作定时器。

    相关文章

      网友评论

          本文标题:自定义指令

          本文链接:https://www.haomeiwen.com/subject/xothtxtx.html