2015-01-10 7 views
0

Я пытаюсь реализовать что-то похожее на TelescopeJS, но намного проще. Поэтому я просто хотел узнать, есть ли способ проверить идентификатор автора.Функция вспомогательного метеорита для возврата функции isAuthor

Что я хочу сделать, показывает кнопку «Удалить» только для автора статьи. В моей статье есть эти поля в коллекции:

Articles.insert({description:description,name:name,hashtag:hashtag,src:url,author:Meteor.userId()}); 

Я хочу, чтобы кнопка удаления была показана только автору сообщения. Поэтому мне нужна вспомогательная функция, которая возвращает логическое значение. . Функция должна следовать: если текущий идентификатор пользователя равен идентификатору пользователя автора, затем верните true, в противном случае false. Теперь это довольно простая функция, но я просто не знаю, как назвать поле автора в моей коллекции.

Заранее благодарен!

JS КОД:

Template.pinterest.helpers({ 
    articles: function() { 
     var search = {}; 
     return Articles.find(search, { 
      limit: 20 
     }); 
    }, 
    adding_interest: function() { 
     return Session.get('adding_interest'); 
    }, 
    numlikes: function() { 
     return Likes.find({ 
      article: this._id 
     }).count(); 
    }, 
    likethis: function() { 
     var curUserlike = Likes.findOne({ 
      muser: Meteor.userId(), 
      article: this._id 
     }); 
     if (curUserlike) { 
      return "You Like This"; 
     } else { 
      return "Thumbs up!"; 
     } 
    }, 
    updated: function() { 
     return Session.get('updated'); 
    }, 
    isAuthor: function() { 
     if (this.author === Meteor.userId()) { //this.author is author in doc 
      console.log(this.author); 

     } 

    } 

}); 

Template.article.helpers({ 
    numlikes: function() { 
     return Likes.find({ 
      article: this._id 
     }).count(); 
    }, 


    userName: function() { 
     return Meteor.user().username || Meteor.user().profile.name || Meteor.userId() 
    }, 
    userimage: function() { 
     if (Meteor.user().services.facebook) { 
      return "http://graph.facebook.com/" + Meteor.user().services.facebook.id + "/picture/?type=large"; 
     } 
    }, 

    timestamp: function() { 
     return new Date(); 
    }, 
    likethis: function() { 
     var curlike = Likes.findOne({ 
      muser: Meteor.userId(), 
      article: this._id 
     }); 
     if (curlike) { 
      return "You Like This"; 
     } 
    } 
}); 


Template.pinterest.rendered = function() { 
    setTimeout(function() { 
     masonize(function() {}); 

    }, 1000) 
    $('.search-query input').focus(); 

} 

HTML TEMPLATE

<template name="article"> 
<div class="item"> 
    <div class="ui special cards"> 
    <div class="card"> 
    <div class="dimmable image"> 
     <div class="ui dimmer"> 
     <div class="content"> 
      <div class="center"> 
    {{#if currentUser}} 
      <div class="ui inverted button"> 

       <a href="#" class="like"> 
       <i class="heart icon"></i> Like 
      </a> 
      </div> 
       {{/if}}  
      </div> 
     </div> 
     </div> 

    <img src="{{src}}"/> 

    <script>$('.special.cards .image').dimmer({ 
    on: 'hover' 
});</script> 

    </div> 
    <div class="content"> 
     <a class="header">{{name}}</a> 
     <div class="meta"> 
     <span class="date">{{timestamp}}</span><br><a href="#">{{hashtag}}</a> 
     </div> 
    </div> 
    <div class="extra content"> 
     <a> 

     {{#if currentUser}}  
     <p> 
      <a href="#" class="like"> 
      <i style="color:#564f8a;" class="heart icon"></i> 
      </a> 

      <a class="ui purple circular label"> 
       {{numlikes}} likes 
       </a>&nbsp;&nbsp; 
       <div class="ui red horizontal label">{{likethis}}</div><br> 
      **{{#if isAuthor}} 
       <a class="remove"><i style="color:#d95c5c;" class="remove icon">{{removeArticle}}</i></a> 

      {{/if}}** 

     </p><br> 
     {{/if}} 
     </a> 
     <div class="description"> 
     <p>{{description}}</p> 

    </div> 
    {{#if currentUser}} 
    <hr>  
    <div class="extra content"> 
    <div class="right floated author"> 
     <img class="ui avatar image" src="{{userimage}}"> {{author}} 
    </div> 
    </div> 
    {{/if}} 
    </div> 
    </div> 
</div> 

</div> 

</template> 

ответ

0

Добавить поле isAuthor к каждой статье с преобразованием. Как это.

+0

Чувак, ты гений! : D Спасибо, миллион! : D: D –

+0

Я серьезно не могу вас поблагодарить! : D –

0
{{#if isAuthor}} 
       <a class="remove"><i style="color:#d95c5c;" class="remove icon">{{removeArticle}}</i></a> 
{{/if}} 

isAuthor:function(){ 
    if(this.author === Meteor.userId()){ //this.author is author in doc 
    return true; 
    } 
    else{ 
    return false; 
    } 

EDIT

Если вы не передаете любой контекст данных в шаблон, то в помощнике

isAuthor:function(){ 
     //here some how you need the id of the document 
     //I saw in your numlikes helper this._id returning the current doc id use the same inplace of id in the following query selector 
    //before continue confirm whether you are getting _id or not by log to console 
     var article= Article.findOne({_id:this._id}); 
     if(article && article.author === Meteor.userId()){ //this.author is author in doc 
     return true; 
     } 
     else{ 
     return false; 
     } 
+0

Пробовал. Не работает :(спасибо за ответ, хотя –

+0

вы можете опубликовать все относительные коды html ad js? – Sasikanth

+0

вы можете попробовать console.log (this.author) перед тем, как сравнивать и публиковать результат – Sasikanth

0

В помощнике Метеор, вы не будете иметь доступ к объекту шаблона с this Referece

Итак, вам нужно будет изменить код следующим образом

  • Передайте author для вспомогательной функции из шаблона, как следующим образом-

    {{#if isAuthor author}} 
         <a class="remove"><i style="color:#d95c5c;" class="remove icon">{{removeArticle}}</i></a> 
    
        {{/if}} 
    

Наблюдай, как автор передается isAuthor из шаблона

  • Теперь вносить изменения в вспомогательной функции из JavaScript
isAuthor: function(author){ 
if (this.author === author) 
    return true 
else 
    return false 
} 
+0

Это тоже не работает. Ничего не видно. У этого приложения табуировано! Кнопка удаления показывает все время, но я хочу, чтобы она была специфичной для автора, поэтому мне нужна эта функция. –

 Смежные вопросы

  • Нет связанных вопросов^_^