"这"流星模板中的关键字

时间:2014-06-08 15:32:09

标签: javascript node.js meteor

我正在通过Discover Meteor工作,并且已经发现了一些我不太清楚的代码。这是我的模板和相关的js

<template name="postItem">
  <div class="post">
    <div class="post-content">
      <h3><a href="{{url}}">{{title}}</a><span>{{domain}}</span></h3>
      <p>
        submitted by {{author}}
        {{#if ownPost}}<a href="{{postEditPath this}}">Edit</a>{{/if}}
      </p>
    </div>
    <a href="{{postPagePath this}}" class="discuss btn">Discuss</a>
  </div>
</template>

Template.postItem.helpers({
  ownPost: function(){
    return this.userId == Meteor.userId();
  },
  domain: function() {
    var a = document.createElement('a');
    a.href = this.url;
    return a.hostname;
  }
});

总的来说,我有点不清楚&#34;这个&#34;正在这个js的背景下工作。我理解&#34;这个&#34;成为我们正在执行的函数的“所有者”,或者更确切地说,是函数是每the quirksmode article方法的对象的“所有者”,但我并没有在上下文中真正理解这个链流星如何实现它。只看代码,我希望this.userId为null。有人可以帮助我,或指向一些解释如何&#34;这个&#34;在Meteor工作?

1 个答案:

答案 0 :(得分:4)

我很惊讶这个问题不经常被问到,因为它不是很明显或没有明确记录。

推荐阅读:

以上文章应该清楚地解释情况,但这里是快速版本:

帮助程序内的上下文(“this”)是模板实例的上下文。您可以直接为模板提供上下文:

{{> postItem myItem}}
// The context is now myItem. "this" inside of a helper is the myItem document.

或间接地如此:

{{#each posts}}
// The context is now a post. "this" inside of a helper is a post document.
{{/each}}