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