Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这是什么;谁的领导委员会的例子?_Javascript_Meteor_Handlebars.js - Fatal编程技术网

Javascript 这是什么;谁的领导委员会的例子?

Javascript 这是什么;谁的领导委员会的例子?,javascript,meteor,handlebars.js,Javascript,Meteor,Handlebars.js,在meteor的leader board示例中,有一段代码使用了这个。设置“selected_player”的id,该id用于更新player数据库。以下是客户端代码: Template.leaderboard.players = function () { return Players.find({}, {sort: {score: -1, name: 1}}); }; Template.leaderboard.selected_name = function () {

在meteor的leader board示例中,有一段代码使用了这个。设置“selected_player”的id,该id用于更新player数据库。以下是客户端代码:

  Template.leaderboard.players = function () {
    return Players.find({}, {sort: {score: -1, name: 1}});
  };

  Template.leaderboard.selected_name = function () {
    var player = Players.findOne(Session.get("selected_player"));
    return player && player.name;
  };

  Template.player.selected = function () {
    return Session.equals("selected_player", this._id) ? "selected" : '';
  };

  Template.leaderboard.events({
    'click input.inc': function () {
      Players.update(Session.get("selected_player"), {$inc: {score: 5}});
    }
  });

  Template.player.events({
    'click': function () {
      Session.set("selected_player", this._id);
      console.log(this._id);
    }
  });
}
正如您所看到的,this.\u id从未设置过(例如
this.\u id=some\u id;
),那么程序是如何获得它的?它如何知道选择了哪个玩家

您可以查看有关该示例的视频,并在此处获取其余代码:

Meteor使用模板系统(带有一些扩展)
Template.player.selected
是一个模板帮助程序…其中
等于当前的“上下文”。这意味着
This.\u id
等于正在渲染/显示的播放器的
\u id

更多信息请参见车把文档部分。

Meteor使用模板系统(带有一些扩展)
Template.player.selected
是一个模板帮助程序…其中
等于当前的“上下文”。这意味着
This.\u id
等于正在渲染/显示的播放器的
\u id

有关更多信息,请参阅车把文档部分。

Meteor使用的模板引擎的文档说明:

助手的实现可以通过
this
访问当前数据上下文

然后,您必须了解数据上下文是如何工作的。这包括在:

基本上,每当您使用块标记(如
#each
)时,它都会创建一个新的数据上下文,在该上下文中对助手方法和块进行求值

对于
#each
,数据上下文在集合的每个对象上循环

我们还可以通过以下方式进一步观察事物:

Template.player.events({
  'click': function () {
    Session.set('selectedPlayer', this._id);
    console.log(this._id)
    console.log(this.constructor.toString())
    console.log(Object.getOwnPropertyNames(this))
    console.log(typeof(this._id))
  }
});
当我们点击科学家时,浏览器控制台上的输出:

function Object() {
    [native code]
}
Array [ "name", "score", "_id" ]
CdpeDAcEnkdFF3Yu2
string
在本例中,数据上下文对应于
Mongo.Collection.find()
的输出,它们是MongoDB文档<代码>\u id由Mongo自动添加

在块标记内部,当前数据上下文的特性现在可以直接使用,如中所示:

<span class="name">{{name}}</span>
<span class="score">{{score}}</span>
{{name}
{{score}}
Meteor使用的模板引擎的文档说明:

助手的实现可以通过
this
访问当前数据上下文

然后,您必须了解数据上下文是如何工作的。这包括在:

基本上,每当您使用块标记(如
#each
)时,它都会创建一个新的数据上下文,在该上下文中对助手方法和块进行求值

对于
#each
,数据上下文在集合的每个对象上循环

我们还可以通过以下方式进一步观察事物:

Template.player.events({
  'click': function () {
    Session.set('selectedPlayer', this._id);
    console.log(this._id)
    console.log(this.constructor.toString())
    console.log(Object.getOwnPropertyNames(this))
    console.log(typeof(this._id))
  }
});
当我们点击科学家时,浏览器控制台上的输出:

function Object() {
    [native code]
}
Array [ "name", "score", "_id" ]
CdpeDAcEnkdFF3Yu2
string
在本例中,数据上下文对应于
Mongo.Collection.find()
的输出,它们是MongoDB文档<代码>\u id由Mongo自动添加

在块标记内部,当前数据上下文的特性现在可以直接使用,如中所示:

<span class="name">{{name}}</span>
<span class="score">{{score}}</span>
{{name}
{{score}}

此处此。\u id是mongodb中当前表示项的对象id。此处您要更新记录。要更新该记录,您应该有一个参考值,因此此处为此。\u id是更新记录的参考值。

此处此。\u id是mongodb中当前表示项的对象id。此处您需要要更新记录。要更新该记录,您应该有一个参考值,所以这里是。\ u id是您更新记录的参考值