流星,表格验证和Bootstrap手风琴

时间:2013-06-13 21:11:31

标签: meteor

我在Meteor应用程序中有一个表单,其中包含一个可由Bootstrap手风琴访问的单选按钮列表。我在meteor中实现了一个验证路由,它将类插入到输入元素中,以将它们标记为有效/无效。

问题是:每当一个输入元素的验证状态发生变化时,模板就会重新绘制,当前打开的手风琴会关闭。

我通过这种笨拙的方法解决了这个问题:

Meteor.startup(function() {
    // track collapse state of accordion....
$('.collapse').on('shown', function() {
    Session.set(addBookingCollapse, $(this).attr('id'));
});
});

Template.addrecord.helpers({
    openAccordion: function(accordion) {
        if (Session.get(addBookingCollapse) == accordion) {
            return 'in'
        };
    }
});

<div id="collapseOne" class="accordion-body 
collapse {{openAccordion 'collapseOne'}}">

......等等其他四个可折叠元素

但是无论谁为了这个缘故,必须有一个更优雅的解决方案?我不想为此浪费会话变量....

2 个答案:

答案 0 :(得分:1)

将输入元素放在{{#isolate}}{{\isolate}}块中有助于避免重新呈现整个模板。请参阅:Meteor Isolates

答案 1 :(得分:0)

我还没有真正关注你的代码/问题,但你为什么要使用id来自己定位每个?为什么不像这样使用所有类的类:

$('.a-class-that-you-name').on('shown', function() {
    var thisSpecificId = $(this).attr('id');
    Session.set('addBookingCollapse', thisSpecificId);
});

那会有用吗?