Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 绑定值上的角度指令_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript 绑定值上的角度指令

Javascript 绑定值上的角度指令,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我正在尝试用Angular创建一个文本格式指令 在我当前的应用程序中,我有很多地方必须以HH:MM:SS格式显示时间,数据库中的时间以秒为单位。所以我在想也许一个指令是正确的。 例如:我想在任何地方以HH:MM:SS表示时间,我只是将指令“showartime”添加到包含以秒为单位的时间的元素中 Q1这里最好的方法是什么 仅部分代码,如图所示: {{time.rowTime}}//以秒为单位的时间 问题是我没有得到值,指令首先执行,如果我“硬编码”一个值,比如说:900代替{time.row

我正在尝试用Angular创建一个文本格式指令

在我当前的应用程序中,我有很多地方必须以HH:MM:SS格式显示时间,数据库中的时间以秒为单位。所以我在想也许一个指令是正确的。 例如:我想在任何地方以HH:MM:SS表示时间,我只是将指令“showartime”添加到包含以秒为单位的时间的元素中

Q1这里最好的方法是什么

仅部分代码,如图所示:


{{time.rowTime}}//以秒为单位的时间
问题是我没有得到值,指令首先执行,如果我“硬编码”一个值,比如说:900代替{time.rowTime},我得到正确的表示形式“00:15:00”

Q2在应用程序的一部分中,我将一个模型绑定到计数器,如下所示。 即使在这里,也能让同样的指令起作用吗

仅部分代码,如图所示:

{{timeCounter}
//timeCounter每秒向timeCounter添加1(控制器中的间隔为$)。
时间计算如下:

time.js

app.factory('time',function(){
var timeFactory={};
timeFactory.timeFromSeconds=函数(秒){
var时闪秒
var分钟=数学地板(秒/60);
var小时=数学地板(秒/3600);
如果(小时>0)分钟=分钟-小时*60;
秒=秒-小时*3600-分钟*60;
如果(小时<10)小时=0“+小时;
如果(分钟<10)分钟=“0”+分钟;
如果(秒<10)秒=“0”+秒;
timeFromSeconds=小时+“:”+分钟+“:”+秒;
返回时间为秒;
}
返回时间工厂;
}

Angular中已经有一个日期过滤器可以为您执行此操作


查看此处的链接:

除了在另一个答案()中说明的日期筛选器外,还可以实现自定义筛选器以进一步格式化模型数据:

angular.filter('doSomething', function() {
    return function(input) {
        //do something on your input and return it
    }
  })
然后,在html中,您可以按以下方式调用过滤器:

{{model|doSomething}}

这可能是获得所需行为的最佳方法,而不是使用指令。

注意,日期筛选器需要毫秒为单位的时间,因此OP必须执行“{time.rowTime*1000 | date}”谢谢,我会接受这个答案,因为它给出了过滤器的解释和如何创建自定义过滤器。如果它还将标准实现描述为{{time.timeRow*1000 | date:“HH:mm:ss”},那就太完美了。即使@mdisel也给出了正确的答案,我认为这可以在未来帮助更多的人。
app.factory('time',function(){

    var timeFactory = {};

    timeFactory.timeFromSeconds = function(seconds){
        var timeFromSeconds     
        var minutes = Math.floor(seconds/60);
        var hours = Math.floor(seconds/3600);

        if(hours > 0) minutes = minutes - hours * 60;

        seconds = seconds - hours * 3600 - minutes * 60;

        if(hours < 10) hours = "0" + hours;
        if(minutes < 10) minutes = "0" + minutes;
        if(seconds < 10) seconds = "0" + seconds;

        timeFromSeconds = hours +":"+minutes+":" + seconds;

        return timeFromSeconds;
    }

 return timeFactory;
 }
angular.filter('doSomething', function() {
    return function(input) {
        //do something on your input and return it
    }
  })
{{model|doSomething}}