我正在重构我正在编写的 Web 应用程序,并且希望将 Controller 移至工厂中(如果可能是正确的结构),以便我可以将其包含在整个应用程序的不同 Controller 中。我似乎不知道应该如何使用 $timeout。我还想通过在偏移量中传递一个函数来删除冗余代码。
强制:我是 AngularJS 新手。
App.controller('TimeCtrl', ['$scope','$timeout', function($scope, $timeout){
// Set and update clocks
var update = function(){
$scope.est_time = moment.utc().add(-5, 'hours').format('h:mm:ss A');
$scope.cst_time = moment.utc().add(-6, 'hours').format('h:mm:ss A');
$scope.cet_time = moment.utc().add(+1, 'hours').format('h:mm:ss A');
$scope.ist_time = moment.utc().add(+5.5, 'hours').format('h:mm:ss A');
$timeout(update, 1000);
};
update();
}]);
是否可以将其移至工厂,以便我最终可以在我的 View 中使用 {{Time.getTime(-5)}}
?或者甚至只是 Controller 中的 Time.getTime()
?
我想出了这个。虽然它有效,但我不确定如何合并 $timeout
功能。
App.factory('Time', ['$timeout', function($timeout){
return {
getTime: function (tz){
return moment.utc().add(tz, 'hours').format('h:mm:ss A');
}
};
}]);
谢谢!
最佳答案
工厂返回原生 js 对象。上面的return
可以编写任何函数。尝试一下。
App.factory('Time', ['$interval', function($interval){
var utc;
$interval(function() {
utc = moment.utc();
}, 1000);
return {
getTime: function (tz){
return utc.add(tz, 'hours').format('h:mm:ss A');
}
};
}]);
我想对上面的内容进行补充。 Angular 中存在过滤器。过滤器转换数据:获取数据模型并返回格式化数据。也许,你需要它。更多信息:https://docs.angularjs.org/api/ng/filter
关于javascript - AngularJS Clock Factory,$超时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27084079/