我在从流星/角度模板渲染模板函数时遇到问题。我正在尝试使用Moment.js包来格式化我的时间戳。我已经看过使用Blaze完成此操作的示例,但我无法在带有Angular的Meteor中复制它。我的问题是formatTimestamp()函数调用。它没有呈现任何内容,我的控制台中没有错误。我哪里错了?
我的模板
<li ng-repeat="task in $ctrl.tasks" ng-class="{'private' : task.private}">
<details>
<summary>{{task.administration.inventoryNumber}}</summary>
<ul class="bxslider">
<li><h3>Adminstration</h3>
<table>
<td>created at: </td><td>{{formatTimestamp(task.administration.createdAt)}}</td>
我的控制器
class TodosListCtrl {
constructor($scope) {
$scope.viewModel(this);
this.subscribe('tasks');
this.helpers({
tasks() {
const selector = {};
return Artefacts.find(selector, {
sort: {
createdAt: -1
}
});
},
currentUser() {
return Meteor.user();
},
formatTimestamp: function (timestamp) {
alert("timestamp");
console.log(timestamp);
return moment(timestamp).calendar();
}
})
}
插入Mongo功能
Artefacts.insert({
administration: {
inventoryNumber: invNum,
boxNumber: boxNum,
createdAt: new Date(),
答案 0 :(得分:0)
你的自定义函数不在构造函数之外,就像这个
class TodosListCtrl {
constructor($scope) {
$scope.viewModel(this);
this.subscribe('tasks');
this.helpers({
tasks() {
const selector = {};
return Artefacts.find(selector, {
sort: {
createdAt: -1
}
});
},
currentUser() {
return Meteor.user();
}
})
}
formatTimestamp(timestamp) {
alert("timestamp");
console.log(timestamp);
return moment(timestamp).calendar();
}
}
但是,请记住在视图中使用$ ctrl作为前缀调用formatTimeStamp,因为它看起来像是在使用ControllerAs语法。
您的代码:
<li ng-repeat="task in $ctrl.tasks" ng-class="{'private' : task.private}">
<details>
<summary>{{task.administration.inventoryNumber}}</summary>
<ul class="bxslider">
<li><h3>Adminstration</h3>
<table>
<td>created at: </td><td>{{formatTimestamp(task.administration.createdAt)}}</td>
应该如何:
<li ng-repeat="task in $ctrl.tasks" ng-class="{'private' : task.private}">
<details>
<summary>{{task.administration.inventoryNumber}}</summary>
<ul class="bxslider">
<li><h3>Adminstration</h3>
<table>
<td>created at: </td><td>{{$ctrl.formatTimestamp(task.administration.createdAt)}}</td>
答案 1 :(得分:0)
不需要为日期格式创建功能。使用角度表达式{{}}调用函数是不好的做法。您可以在Meteor助手中格式化日期。
this.helpers({
tasks() {
const selector = {};
this.value = Artefacts.find(selector, {
sort: {
createdAt: -1
}
// add filter here on createdAt
$filter('filter')(this.value.cretedAt);
});
},