javascript - angular自定义指令中需要取出部分数据提交到后台,这部分数据怎么取出来?
伊谢尔伦
伊谢尔伦 2017-04-11 11:23:53
[JavaScript讨论组]

接触angular有一段时间了,现在项目中有用到一个时间选择的控件,我就自己写了一个,现在想要进行封装成一个自定义指令,方便使用,也是第一次写指令。样子想要做成

这个样子。
html:

      

:

css

.co-timepicker-box {
    float: left;
    width: 110px;
    height: 32px;
    border: 1px solid #cccccc;
}

.fl{
    float: left;
}
.wi-timepicker-timeinput{
    width: 35px;
    height: 30px;
    padding: 0;
    font-size: 20px;
    text-align: center;
    line-height: 30px;
    border:0;
    outline: none;
    /*background-color: lightgrey;*/
}

.wi-timepicker-change-box{
    width: 15px;
    height: 30px;
    border:0;
}
.wi-timepicker-change-time{
    width: 15px;
    height: 15px;
    border: 0;
}
.wi-timepicker-maohao{
    width: 7px;
    height: 30px;
    font-size: 16px;
    text-align: center;
    line-height: 30px;
}
.arrow-up{
    background: url("../img/time-up.png")no-repeat center center;
    background-size: 14px 6px;
}
.arrow-down{
    background: url("../img/time-down.png")no-repeat center center;
    background-size: 14px 6px;
}

js:

/**
         * @return {string}
         */
        scope.PrefixInteger = function (num, n) {
            return (Array(n).join(0) + num).slice(-n);
        };


        //--------------------------------------
        if(!scope.hour){
            scope.hour = 12;
        }
        if(!scope.minute){
            scope.minute = '00';
        }
        var reg=/^\d+$/;
        scope.timeUp = function (type) {
            if(type == 1){
                if(reg.test(scope.hour)){
                    if(parseInt(scope.hour) >=0 && parseInt(scope.hour) <= 23){
                        if(scope.hour == 23){
                            scope.hour = -1;
                        }
                        scope.hour = parseInt(scope.hour) + 1;
                    }else {
                        scope.hour = 12;
                    }
                }else {
                    scope.hour = 12;
                }
                scope.hour = scope.PrefixInteger(scope.hour,2);
            }else if(type == 2){

                if(angular.isNumber(scope.minute) || reg.test(scope.minute)){
                    if(parseInt(scope.minute) >=0 && parseInt(scope.minute) <=59){
                        if(scope.minute == 59){
                            scope.minute = -1;
                        }
                        scope.minute = parseInt(scope.minute) + 1;
                    }else {
                        scope.minute = 0;
                    }
                }else {
                    scope.minute = 0;
                }
                scope.minute = scope.PrefixInteger(scope.minute,2);
            }
        };
        scope.timeDown = function (type) {
            if(type == 1){
                if(angular.isNumber(scope.hour) || reg.test(scope.hour)){
                    if(parseInt(scope.hour) >=0 && parseInt(scope.hour) <=24){
                        if(scope.hour == 0){
                            scope.hour = 24;
                        }
                        scope.hour = parseInt(scope.hour) - 1;
                    }else {
                        scope.hour = 12;
                    }
                }else {
                    scope.hour = 12;
                }
                scope.hour = scope.PrefixInteger(scope.hour,2)
            }else  if(type == 2){
                if(angular.isNumber(scope.minute) || reg.test(scope.minute)){
                    if(parseInt(scope.minute) >=0 && parseInt(scope.minute) <=60){
                        if(scope.minute == 0){
                            scope.minute = 60;
                        }
                        scope.minute = parseInt(scope.minute) - 1;
                    }else {
                        scope.minute = 0;
                    }
                }else {
                    scope.minute = 0;
                }
                scope.minute = scope.PrefixInteger(scope.minute,2);
            }
        };

封装的时候,我就先一股脑的塞到一个指令里

var appDirectives = angular.module('appDirectives', []);
appDirectives.directive('tltimePicker', function() {
    return {
        restrict : 'AE',
        replace : true,
        template:
            '

'+ ''+ '

'+ '

'+ '

'+ '

'+ '

'+ ':'+ '

'+ ''+ '

'+ '

'+ '

'+ '

', link : function(scope,element,attrs) { /** * @return {string} */ scope.PrefixInteger = function (num, n) { return (Array(n).join(0) + num).slice(-n); }; if(!scope.hour){ scope.hour = 12; } if(!scope.minute){ scope.minute = '00'; } var reg=/^\d+$/; scope.timeUp = function (type) { if(type == 1){ if(reg.test(scope.hour)){ if(parseInt(scope.hour) >=0 && parseInt(scope.hour) <= 23){ if(scope.hour == 23){ scope.hour = -1; } scope.hour = parseInt(scope.hour) + 1; }else { scope.hour = 12; } }else { scope.hour = 12; } scope.hour = scope.PrefixInteger(scope.hour,2); }else if(type == 2){ if(angular.isNumber(scope.minute) || reg.test(scope.minute)){ if(parseInt(scope.minute) >=0 && parseInt(scope.minute) <=59){ if(scope.minute == 59){ scope.minute = -1; } scope.minute = parseInt(scope.minute) + 1; }else { scope.minute = 0; } }else { scope.minute = 0; } scope.minute = scope.PrefixInteger(scope.minute,2); } }; scope.timeDown = function (type) { if(type == 1){ if(angular.isNumber(scope.hour) || reg.test(scope.hour)){ if(parseInt(scope.hour) >=0 && parseInt(scope.hour) <=24){ if(scope.hour == 0){ scope.hour = 24; } scope.hour = parseInt(scope.hour) - 1; }else { scope.hour = 12; } }else { scope.hour = 12; } scope.hour = scope.PrefixInteger(scope.hour,2) }else if(type == 2){ if(angular.isNumber(scope.minute) || reg.test(scope.minute)){ if(parseInt(scope.minute) >=0 && parseInt(scope.minute) <=60){ if(scope.minute == 0){ scope.minute = 60; } scope.minute = parseInt(scope.minute) - 1; }else { scope.minute = 0; } }else { scope.minute = 0; } scope.minute = scope.PrefixInteger(scope.minute,2); } }; } }; });

这样在页面使用 是可以实现的,但是现在需要把小时和分钟取出来,提交到后台,所以想加上一个ng-model之类的,但是不知道该怎么办了。。。查阅了好多资料之后,发现还是没有解决问题的,身边也没有对这个擅长的小伙伴,所以才发出来问下大家,有什么思路可以指导下的,麻烦指导指导。我是angular新人,希望大神看到问题觉得太弱鸡的不要太介意。谢谢了

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(1)
怪我咯

我看你没规定directive的scope,用的是父scope吧。
因为看不到你的controller,姑且认为是所在的controller的scope,那你的hour和minute应该也在controller的scope中吧,直接从这个scope中获取吧。
然后给你推荐个插件ng-inspector,方便你查看各个scope和其中保存的数据。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号