在指令angularjs中格式化值

时间:2015-07-24 04:58:19

标签: angularjs angularjs-directive

我成功地能够调用一个指令,该指令的数据是通过工厂从AJAX调用接收的。我收到的一个值是Unix时间戳格式,我需要使用类似的东西将其转换为人类可读的格式

new Date(date*1000);

格式化此值(info.dt)并将其放回指令中的最佳方法是什么?

  1. 我是否需要在指令中使用链接?
  2. 我可以指定过滤器吗?
  3. 代码详情:

    我的指示,

    mist.directive('weatherToday', function () {
        return {
            restrict: 'E',
            templateUrl: "pages/tw.html",
            scope: {info: '='}
        };
    });
    

    tw.html,(我需要将 info.dt 转换为人类可读的日期时间格式。)

    <div>
    
        <h1>{{info.dt}}</h1>
    </div>
    

    这样的指令被调用,

    <weather-today info="weather"></weather-today>
    

    工厂详情:

    WeatherService.getTodaysData().then(
        function (data) {
            $scope.weather = data;
            }
    );
    
    mist.factory('WeatherService', function ($http) {
        return {
            getTodaysData: function () {
            return $http.get('http://example.com').then(function (result) {
            return result.data;
            });
        }
    }});
    

1 个答案:

答案 0 :(得分:0)

您的factory将提供数据并由其他代码重复使用。因此,将Unix时间戳格式化为工厂内的Date对象。这样工厂的用户就不需要重复格式化了。

mist.factory('WeatherService', function ($http) {
    // You may want to extract this function to an independent factory/service
    function formatUnixDate (timestamp) {
        // Return the formatted Date.
    }
    return {
        getTodaysData: function () {
        return $http.get('http://example.com').then(function (result) {
            // Suppose the `data` is an Array.
            result.data = result.data.map(function (item) {
                item.myDate = formatUnixDate(item.myDate);
                return item;
            });
            return result.data;
        });
    }
}});