当用户点击其用户个人资料页面时,他们应该会看到友好日期。相反,他们会看到原始的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;
}
};
});