簡體   English   中英

使用meteor.js反應性地調用js函數/事件

[英]Reactively call a js function/event with meteor.js

我是meteor.js的新手。 仍然習慣它。 我了解了如何根據服務器上的游標更新來反應性更新模板,如下所示:

 {{#if waitingforsomething.length}} Something Happened! {{/if}}

這對於在頁面上顯示元素,更新列表和內容很有用。 現在,我的問題是:當我要響應性地更新某些內容時,如果我想調用一些JavaScript或觸發某個事件該怎么辦? 使用meteor.js的正確方法是什么?

這有點過時了,但是Sacha Greif的“ 反應性基礎知識”是對流星反應性模型的快速而簡潔的介紹。

基本上,您具有所謂的reactive computations ,該代碼觀察特殊的數據對象( sessionssubscriptionscursors等),並且只要這些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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM