- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Tracker 方法并不完全属于 Meteor 功能的核心,很少在教程和初学者书籍中使用(如果是的话,也没有很好地解释),因此被认为更“可怕” “比框架的其余大部分部分都要多。
就我而言,我从未成功地将 Tracker.autorun
纳入我的项目中,因为它似乎从未达到预期的效果。这就是文档所说的:
Run a function now and rerun it later whenever its dependencies change.
对我来说,这听起来像是一种使非反动来源变得反动的方式,但接下来你看一下例子,第一个看起来像这样:
Tracker.autorun(function () {
var oldest = _.max(Monkeys.find().fetch(), function (monkey) {
return monkey.age;
});
if (oldest)
Session.set("oldest", oldest.name);
});
这与不使用 Tracker.autorun
到底有什么不同?游标已经是一个反动源,并且让事情变得更加困惑下一个示例涉及另一个反动源: session 。
Tracker.autorun
是否仅适用于反动源,如果是这样,在 Tracker
中使用它们有什么好处?让他们变得双重反动?
最佳答案
为了实现响应式编程(事件驱动编程的一种变体),Meteor 使用了 2 个不同的概念:
这两个概念是由两个很少使用的底层实现的Tracker
对象,即Tracker.Computation和辅助对象 Tracker.Dependency这是一个用于存储一组计算的容器。
一个Tracker.Computation
是一个具有 2 个重要方法的对象:
invalidate()
,这导致计算重新运行。onInvalidate(callback)
用于实际运行计算任意代码。当您调用Tracker.autorun
时,您基本上是在创建一个新的计算并注册一个 onInvalidate
使用您作为参数传递的函数进行回调。
一个Tracker.Dependency
是使用 2 种方法进行计算的集合。
depend()
:将当前计算添加到集合中。changed()
:调用时,使每个注册的计算无效。当响应式(Reactive)数据源在计算中注册依赖项时,它会调用 Dependency.depend()
,它只是将当前计算(如果有)添加到跟踪计算集中。
响应式(Reactive)数据源修改时,调用Dependency.changed()
这将使集合中每个已注册的计算无效。
来源:The Meteor Tracker manual .
在 Meteor 框架中,您通常只处理几个实现响应式编程概念的更高级别的对象。
Tracker.autorun
生成的,默认情况下,模板助手始终在响应式(Reactive)计算中运行。Tracker.Dependency
为了使计算无效,它们包括 MiniMongo 游标,Session
变量,Meteor.user()
等等...使用Tracker.autorun
当您需要在模板助手之外以 react 方式重新运行任意代码时,例如在模板 onRendered
内生命周期事件,使用快捷键this.autorun
(生成响应式(Reactive)计算,当模板被销毁时自动停止)以对任何反应式数据源修改使用react。
这是一个模板的小示例,该模板计算您单击按钮的次数,并在单击 10 次时将计数器重置为 0。
HTML
<template name="counter">
<div class="counter>
<button type="button">Click me !</button>
<p>You clicked the button {{count}} times.</p>
</div>
</template>
JS
Template.counter.onCreated(function(){
this.count = new ReactiveVar(0);
});
Template.counter.onRendered(function(){
this.autorun(function(){
var count = this.count.get();
if(count == 10){
this.count.set(0);
}
}.bind(this));
});
Template.counter.helpers({
count: function(){
return Template.instance().count.get();
}
});
Template.counter.events({
"click button": function(event, template){
var count = template.count.get();
template.count.set(count + 1);
}
});
关于javascript - 简单来说,Tracker.autorun 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30546486/
Autorun意思是自动运行,功能是在U盘插上电脑或者硬盘第一次被加载的时候自动执行。这个文件与病毒什么的没有任何直接关系。那么为什么这个文件会报毒呢?主要是因为凡是感染U盘的病毒八成都会在U盘上创
像jayant所说的那样修复。 cat upload.sh /home/Dropbox-Uploader/dropbox_uploader.sh upload -f /home/Dropbox
Meteor.autorun和Tracker.autorun有什么区别? 他们只是别名吗? 被弃用了吗? 是否有任何一种情况比另一种更好的情况? 我很清楚在模板生命周期回调中使用this.autoru
好消息,我的c64 ist在我的阁楼上花了很多年后仍在运行。 但是我一直想知道的是: 如何从已经插入的软盘自动加载和运行程序 当我打开c64时? 像load "*",8,1这样的自动运行命令就足够了.
进程文件: autorun or autorun.exe 进程名称: Autorun Executable 进程类别:存在安全风险的进程 英文描述: autorun.exe is a fac
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我有一个包含图表的模板,使用 MorrisJS 呈现。图表应在 currentData 时更新 session 变量已更改,因此我已将其设为响应式数据源: Template.chart.rendere
看Tracker.autorun ,这主要是神奇的......但我想知道它如何决定哪些变量将形成计算的依赖关系。它只挑选出“ react 性”变量,例如以下内容: window.bar = 1
在客户端我有这个: var Coll1 = new Meteor.Collection('myCollection1'); var Coll2 = new Meteor.Collection('myC
我正在初始化一个类的实例,并开始使用autorun观察事物的数组。此方法返回一个处理器。从我对Typescript的经验来看,我需要在某个时候处置该实例,否则我有可能遇到内存泄漏的风险。如果是这样,我
我想知道将 Tracker.autorun 放在何处以确保其他所有内容都已加载。我以为 Meteor.startup(function(){...}); 用于这种情况,但是当我从 mdg:geoloc
我正在尝试使用 autorun.inf 在文件夹名称中包含空格的子文件夹下运行我的可执行文件。像这样: H:\ autorun.inf FOLDER NAME 1 fi
我有以下 autorun.inf [Autorun] action="Blah, Inc." open=marketing.exe icon=blah.ico label="Blah, Inc." 在
我在使用 zeus + rspec 和 the solution I found 时遇到了一些问题说我必须删除require 'rspec/autorun'来自 spec_helper.rb . 效果
我有一个模板时间线,其中显示当前时间和从中生成的值。为此,我将一个 reactiveVar 附加到我的模板,并在附加到同一模板的 autorun 中更新它。 它的外观如下: Template.Time
Tracker 方法并不完全属于 Meteor 功能的核心,很少在教程和初学者书籍中使用(如果是的话,也没有很好地解释),因此被认为更“可怕” “比框架的其余大部分部分都要多。 就我而言,我从未成功地
我有以下内容: Meteor.startup(function() { var computation = Tracker.autorun(function() { var current
我使用 Python 编写了一个备份脚本,我使用了 cx_Freeze将其转换为 backup.exe。我把这个可执行文件放在我的 USB 闪存驱动器上。如果我运行 C:\> E:\backup\ba
我有一个 win32 api 应用程序驻留在 USB 虚拟 CD 上。能否判断是windows执行autorun.inf还是用户在explorer中双击cd图标运行? 谢谢... 最佳答案 没有直接的
在这个类中,我使用一个初始化的 bool 状态来产生 Mobx.autorun 执行。否则 'this' 未完全分配并导致错误。有没有其他/更清洁的方法来做到这一点? class GameMaster
我是一名优秀的程序员,十分优秀!