[英]Reactively call a js function/event with meteor.js
我是meteor.js的新手。 仍然習慣它。 我了解了如何根據服務器上的游標更新來反應性更新模板,如下所示:
{{#if waitingforsomething.length}} Something Happened! {{/if}}
這對於在頁面上顯示元素,更新列表和內容很有用。 現在,我的問題是:當我要響應性地更新某些內容時,如果我想調用一些JavaScript或觸發某個事件該怎么辦? 使用meteor.js的正確方法是什么?
這有點過時了,但是Sacha Greif的“ 反應性基礎知識”是對流星反應性模型的快速而簡潔的介紹。
基本上,您具有所謂的reactive computations
,該代碼觀察特殊的數據對象( sessions
, subscriptions
, cursors
等),並且只要這些reactive sources
任何一個發生更改,代碼便會執行。
這是通過Tracker API公開的
在Tracker.autorun
或模板實例中的任何內容, Tracker.autorun
都會在Tracker.autorun
this.autorun
運行中的反應性數據源發生更改的情況this.autorun
運行。
反應性數據源是ReactiveVar
實例,數據庫查詢, Session
變量等。
Template.myTemplate.onCreated(function() {
// Let's define some reactive data source
this.reactive = new ReactiveVar(0);
// And put it inside this.autorun
this.autorun(() => console.log(this.reactive.get()));
});
Template.myTemplate.events({
// Now whenever you click we assign new value
// to our reactive var and this fires
// our console.log
'click'(event, template) {
let inc = template.reactive.get() + 1;
template.reactive.set(inc);
}
});
計算對我來說效果很好:
Template.myTemplate.onRendered(function() {
this.computation = Deps.autorun(function () {
if (something) {
$(".reactive").html("Something Happened!");
}
});
});
Template.myTemplate.destroyed = function(){
if (this.computation){
this.computation.stop()
}
};
我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.