如何创建包含多个输入控件的自定义角度指令?

时间:2016-01-28 11:54:09

标签: javascript angularjs angular2-directives

我正在开展我的第一个角度项目。无论好坏,我试图将几乎所有可重复的HTML转换为指令。我要求让用户选择HH:MM格式的时间。所以我需要显示两个SELECT元素。由于我需要在很多地方提供这种控制,我试图转换成一个指令。

指令模板

<a>

此指令的预期最终结果是获得以分钟为单位的时间值[(HH * 60 + MM)]以进行进一步计算。但是,我无法想到一种方法,我可以获得与我的指令相关联的单个ngModel,它返回两分钟下拉组合的分钟时间。我读到了Link函数,但无法弄清楚我是否可以在我的场景中使用它。让自定义指令跨越多个输入元素甚至是一个好习惯吗?

1 个答案:

答案 0 :(得分:1)

请参考以下代码:

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="angular.min.js"></script>

    <script type="text/javascript">
        angular.module('demoApp', [])
            .controller('Controller', ['$scope', function ($scope) {
                $scope.totalMinutes = function () {
                    return $scope.mintutes + ($scope.hours * 60);
                }
                $scope.mintutes = 1;
                $scope.hours = 1;
            }])
            .directive('timeSelection', function () {
                return {
                    restrict: 'E',
                    template: "Hours:<input type='number' ng-model='hours' /> Minutes:<input type='number' ng-model='minutes' />",
                    scope: {
                        hours: "=hours",
                        minutes:"=mintutes"
                    }
                };
            });
    </script>
</head>
<body>
    <div ng-app="demoApp">
        <div ng-controller="Controller">
            <time-selection hours="hours" mintutes="mintutes" ></time-selection>
            Total Minutes : {{totalMinutes()}}
        </div>
    </div>
</body>
</html>