Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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 获取meteor中手风琴的当前状态_Javascript_Meteor_Semantic Ui - Fatal编程技术网

Javascript 获取meteor中手风琴的当前状态

Javascript 获取meteor中手风琴的当前状态,javascript,meteor,semantic-ui,Javascript,Meteor,Semantic Ui,语义手风琴快把我逼疯了! 有人知道在Meteor中实现手风琴时,是否有方法获取手风琴的当前状态(例如打开或关闭)? 如果理解正确,我应该在Template.foo.helpers节内的.js文件中创建一个函数。到目前为止,我所做的是: isOpen : function() { var cState = $('.ui.accordion').currentState(); return cState=='open'; } 如果手风琴打开,则返回t

语义手风琴快把我逼疯了! 有人知道在Meteor中实现手风琴时,是否有方法获取手风琴的当前状态(例如打开或关闭)? 如果理解正确,我应该在Template.foo.helpers节内的.js文件中创建一个函数。到目前为止,我所做的是:

    isOpen : function() {
        var cState = $('.ui.accordion').currentState();
        return cState=='open';
    }
如果手风琴打开,则返回true;否则返回false,但它似乎不起作用。我做错了什么?有没有办法做这样的工作


提前谢谢

问题在于您的助手没有引用反应式数据源,这意味着每当手风琴的状态发生变化时,不会重新执行该数据源

您可以通过使用语义UI accordion插件回调来跟踪小部件的当前状态并将其存储为反应数据源来修复此问题

Template.accordion.onCreated(function(){
  // you'll need to meteor add reactive-var to use this
  this.opened = new ReactiveVar(false);
});

Template.accordion.onRendered(function(){
  // store a reference to the template instance to use it later
  // in functions where the this keyword will be bound to something else
  var template = this;
  this.$(".ui.accordion").accordion({
    onOpen:function(){
      // here, the this keyword is bound to the currently opened item
      template.opened.set(true);
    },
    onClose:function(){
      // modify the reactive var accordingly
      template.opened.set(false);
    }
  });
});

Template.accordion.helpers({
  opened:function(){
    // Template.instance().opened is a reactive data source
    // this helper will get re-executed whenever its value is modified
    return Template.instance().opened.get();
  }
});

打开控制台并运行以下行:$('.ui.accordion').currentState();另外,通常使用==(但这在这里并不重要)。这不是流星特有的问题。控制台返回“不是函数”,但@saimeunt给了我正确的解决方案!这解决了我的问题,谢谢谢谢谢谢!:)我的upvote需要15个我目前缺乏的声誉(昨天订阅),但我发誓我会给你我所有的分数:))