标题:“Angular Js数据格式不正确”

时间:2016-01-09 13:09:59

标签: angularjs angularjs-scope

当用户点击其用户个人资料页面时,他们应该会看到友好日期。相反,他们会看到原始的Javascript日期。我正在使用服务来转换数据。我认为问题与正在使用的ng-click和href有关。我使用MEAN Stack在我的单页应用程序中执行此操作,并且唯一有问题的页面是使用ng-click打开的页面。

将用户导航到其用户个人资料的链接如下

<a ng-show="authenticated" href="#/usrProfile" ng-click="showUser(current_user)">{{current_user}} </a>

点击上面的html链接可打开其用户个人资料页面。有正确的日期时间,但它没有正确呈现。它显示,例如“2015-12-01T01:19:22.947Z”,而不是“2015年11月30日”,它根据时区进行调整,更具人性化。如果用户单击浏览器的后退按钮,则单击前进按钮将显示正确呈现的相同日期。

使用服务,Angular在控制器外部呈现日期。该服务使用以下代码呈现日期

vUsrProfile.usrCreatedDate = $filter('date')(vOriginalUsrCreatedDate,"MMM d, y", $rootScope.current_offset);

使用以下代码将服务中的数据传递给控制器​​

var usrSingle = usrTracker.getProperty();
$scope.usrSingle = usrSingle;

显示该日期的代码是此代码

<h5 title="Date {{usrSingle.username}} joined">{{usrSingle.usrCreatedDate}}</h5>

我错过了什么。感觉就像在服务转换之前显示数据一样。

我希望这是有道理的。这似乎是一个难以描述的问题。

更多细节:

控制器代码。将数据从一个控制器传递到另一个控制器。

// Controller for link
app.controller('mainController', function ($scope, usrTracker, usrServiceById) {
// removed non-relevant code ...
    // get single user data
    $scope.showUser = function (vUsername) {
        usrTracker.setProperty(usrServiceById.get({ "username": vUsername }));
    };
// removed non-relevant code ...
});

// Controller User Profile Page
app.controller('usrPageController', function ($scope, usrTracker) {

    var usrSingle = usrTracker.getProperty();
    $scope.usrSingle = usrSingle;

// removed non-relevant code ...
});

// factory for a single user
app.factory('usrServiceById', function ($resource) {
    return $resource('/api/usrProfile/:id', { id: '@_id' });
});

// factory to hold user data between controllers
app.factory('usrTracker', function ($filter,$q,$rootScope) { 
    var vUsrProfile = {
        username: 'username',
        usrEmail: 'usrEmail'
        , usrFirst: 'usrFirst'
        , usrLast: 'usrLast'
        , usrTimezone: 'usrTimezone'
        , usrGender: 'usrGender'
        , usrBirth: 'usrGender'
        , usrPrefHours: 'usrPrefHours'
        , usrSocAuth: 'usrSocAuth'
        , usrCreatedDate: 'usrCreatedDate'
        , usrAccessToken: 'usrAccessToken'
    , usrRefreshToken: 'refreshToken'
        , usrOffset: '+0000'
        , usrDesc: 'usrDesc'
        , userSocId: 'userSocId'
    };
    return {
        getProperty: function () {
            var vOriginalUsrCreatedDate = vUsrProfile.usrCreatedDate; 
            vUsrProfile.usrCreatedDate = $filter('date')(vOriginalUsrCreatedDate,"MMM d, y", $rootScope.current_offset);
            return vUsrProfile;
        },
        setProperty: function (value) {
            vUsrProfile = value;
        }
    };
});

0 个答案:

没有答案