2017-02-19 64 views
0

我正在嘗試使用單選按鈕過濾基於列表的集合,並且每次用戶單擊過濾的集合都應該更新的另一個單選按鈕。我已經得到了點擊收音機,但查找不工作的價值,因爲我不能將變量傳遞給幫手流星如何將一個變量傳遞給幫手

我的客戶JS:

Template.NeuesEvent.events({ 
    "click .RadioButtonOnClick": function(event){  
     var variable = $('input[name="VersammlungRadio"]:checked').val(); 
     console.log(variable); 

    } 
}); 


Template.friendsScroll.helpers({ 
    friend: function(){ 
     return Friends.find({Field: variable}); 
    } 
}); 

我感謝每個幫助謝謝;)

回答

1

因爲你需要傳遞變量到不同的模板,您可以使用會話

Template.NeuesEvent.events({ 
    "click .RadioButtonOnClick": function(event){  
     var variable = $('input[name="VersammlungRadio"]:checked').val(); 
     Session.set("variable",variable); 

    } 
}); 

Template.friendsScroll.helpers({ 
    friend: function(){ 
     return Friends.find({Field: Session.get("variable")}); 
    } 
}); 

如果會話包未安裝則使用

0123安裝
meteor add session 
+0

完美答案謝謝;) – Michael

1

在我看來,你應該避免使用Sessions,因爲它們是在客戶端應用程序中全局設置的。

在你的例子中,你使用了兩個不同的模板(NeuesEvent和friendsScroll)。是另一個的模板父項嗎?他們是兄弟姐妹嗎?

如果問題是如何傳遞參數模板之間

// client/NeuesEvent.js 
Template.NeuesEvent.helpers({ 
    dataToFriendScroll() { 
     return { 
     text: 'blahblah', 
     randomBool: false, 
     }; 
    }, 
}); 

// client/NeusEvent.html 
<!-- beginning of the template --> 
{{> friendsScroll dataToFriendScroll}} 
<!-- end of the template --> 

// client/friendScroll.js 
Template.friendScroll.onCreated(function() { 
    const self = this; 

    // The data you want to get from the other template 
    self.autorun(() => { 
    const dataPassedInTemplate = Template.currentData(); 
    const textFromNeusEvent = dataPassedInTemplate.text; 
    const randomBoolFromTheOtherTemplate = dataPassedInTemplate.randomBool; 
    }) 
}) 

要通過助手事件相同模板之間的變量,你可以使用流星反應詞典包:https://atmospherejs.com/meteor/reactive-dict

// client/neuesEvent.js 

Template.neuesEvent.onCreated(function() { 
    const self = this; 

    self.state = new ReactiveDict(); 
    self.state.setDefault({ 
    radioButton: false, 
    }); 
}); 


Template.neuesEvent.events({ 
    'click .RadioButtonOnClick': function (event, templateInstance) { 
    const result = event.target.value; 
    templateInstance.state.set('radioButton', result); 
    }, 
}); 


Template.neuesEvent.helpers({ 
    result() { 
    const instance = Template.instance(); 
    const resultButton = instance.state.get('radioButton'); 
    return resultButton; 
    }, 
});