2016-10-25 5 views
0

나는 유성/각 템플릿에서 템플릿 함수 호출을 렌더링하는 데 문제가있다. Moment.js 패키지를 사용하여 타임 스탬프의 형식을 지정하려고합니다. Blaze로 수행 한 예제를 보았지만 Meteor에서 Angular로 복제 할 수는 없습니다. 내 문제는 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(); 
    } 
}) 
} 

삽입 몽고 기능

Artefacts.insert({ 
    administration: { 
    inventoryNumber: invNum, 
    boxNumber: boxNum, 
    createdAt: new Date(), 

답변

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(); 
    } 
} 
처럼 생성자의 외부 간다

뿐만 아니라, 당신은 ControllerAs 구문을 사용하는 것처럼 보이기 때문에 접두어로 $ Ctrl 키와 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> 

어떻게해야 :

<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> 
+0

는 정말 고마워요! 그것을 해결! – GraemeB

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); 
    }); 
    }, 
관련 문제