首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AngularJS应用程序:如何从视图中获取数据并在控制器中使用?

AngularJS应用程序:如何从视图中获取数据并在控制器中使用?
EN

Stack Overflow用户
提问于 2019-07-14 14:01:53
回答 1查看 68关注 0票数 1

我正在AngularJS 1.6中开发一个应用程序,使用Giphy.com api。

该视图除其他外显示“导入日期”。参数import_datetime来自API,并且是项特定的。

我很想把日期转换成更方便用户的格式:

代码语言:javascript
运行
复制
<p class="m-0 meta">{{giphy.import_datetime | date : "dd.MM.y" }}</p>

不幸的是,这是行不通的。

我的控制器有一个流畅的代码:

代码语言:javascript
运行
复制
app.controller("giphyCtrl", ["$scope", "$http", "$filter", "$timeout", function($scope, $http, $filter, $timeout) {
    var url = "https://api.giphy.com/v1/gifs/trending?api_key=PTZrBlrq8h2KUsRMeBuExZ5nHyn7dzS0&limit=240&rating=G";
    $scope.giphyList = [];
    $scope.search = "";
    $scope.filterList = function() {
        var oldList = $scope.giphyList || [];
        $scope.giphyList = $filter('filter')($scope.giphys, $scope.search);
        if (oldList.length != 0) {
            $scope.pageNum = 1;
            $scope.startAt = 0;
        };
        $scope.itemsCount = $scope.giphyList.length;
        $scope.pageMax = Math.ceil($scope.itemsCount / $scope.perPage);
    };

    $http.get(url)
        .then(function(data) {
            // giphy arary
            $scope.giphys = data.data.data;
            $scope.filterList();
            console.log($scope.giphys);

            // Paginate
            $scope.pageNum = 1;
            $scope.perPage = 24;
            $scope.startAt = 0;
            $scope.filterList();

            $scope.currentPage = function(index) {
                $("html, body").animate({
                    scrollTop: 0
                }, 500);
                $timeout(function() {
                    $scope.pageNum = index + 1;
                    $scope.startAt = index * $scope.perPage;
                }, 0);
            };

            $scope.prevPage = function() {
                if ($scope.pageNum > 1) {
                    $scope.pageNum = $scope.pageNum - 1;
                    $scope.startAt = ($scope.pageNum - 1) * $scope.perPage;
                }
            };

            $scope.nextPage = function() {
                if ($scope.pageNum < $scope.pageMax) {
                    $scope.pageNum = $scope.pageNum + 1;
                    $scope.startAt = ($scope.pageNum - 1) * $scope.perPage;
                }
            };

            $scope.selectedIndex = null;
            $scope.selectedGiphy = null;

            $scope.fetchSinglegGiphy = function(giphy, index) {
                $scope.selectedIndex = index;
                $scope.selectedGiphy = giphy;
            }

        });

}]);

我可能应该从视图中获取import_datetime,将其转换为JavaScript Date对象并在视图中使用它。

问题:

  1. 我怎么能这么做?
  2. 或者有什么更好的选择
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-14 15:06:49

您可以创建一个自定义筛选器,该过滤器将解析从pipe格式到JavaScript date对象的日期,并将其输送到AngularJS内置的date筛选器:

代码语言:javascript
运行
复制
var app = angular.module('app', []);

app.filter('dateParse', function() {
  return function(date) {
    return Date.parse(date);
  };
})
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="app">
  <p>{{'2019-07-10 14:12:59' | dateParse | date : "dd.MM.y"}}</p>
</div>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57028069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档