2015-12-02 104 views
0

尝试使用引导酥料饼与MeteorJS并有2个烦恼:酥料饼与MeteorJS

  1. 不能分配从收集来的输入值
  2. 我试图得到一个html,body但酥料饼有一定的价值每个模板每酥料饼,这是正常的,但我尽量1个屏幕上只能做1米酥料饼

我有收集Posts该等文件Posts.insert({title:"Loli Pop"});

Meteor.publish("posts_levels", function(){ 
    return Posts.find(); 
}); 

<template name="www"> 
{{#each level}} 
    {{> one}} 
{{/each}} 
</template> 

Template.www.onCreated(function(){ 
    var self = this; 
    self.autorun(function() { 
     self.subscribe('posts_levels'); 
    }); 
}); 

<template name="one"> 
    <div class="popover-markup"> 
     <div class=" trigger "> 
      Edit 
     </div> 
    </div> 
    <div class="content-popover hide"> 
     <form class="form"> 
      <input name="title" id="post_edit_title" value="{{title}}" /> 
     </form> 
    </div> 
</template> 

Template.one.onRendered(function(){ 
    $('.popover-markup > .trigger').popover({ 
    html : true, 
    content: function() { 
     return $('.content-popover').html(); 
    }, 
    container: 'body', 
    placement: 'right' 
}); 

编辑: 2问题就迎刃而解了50%,我添加此,现在它躲到Ë当我打开另一酥料饼的,但后来我必须点击.trigger 2倍,显示新酥料饼

$('.popover-markup > .trigger').popover({ 
    html : true, 
    content: function() { 
     return $('.content-popover').html(); 
    }, 
    container: 'body', 
    placement: 'right' 
    }).on("click", function(e){ 
     $('.trigger').not(this).popover('hide'); 
    }); 
+0

我会建议问2个问题。并告诉我们你已经发现哪些不起作用。它看起来并不是所有的代码都是在你的问题中才能理解问题。你提到一个我们在你的问题中没有看到的集合。 –

+0

@josharink我会编辑这个问题,1分钟 – Qwe

+0

@josharink完成!如果你能帮忙,这将是非常棒的! – Qwe

回答

0

这里是你的问题1(从收集值分配给输入)的anwser。

模板中的输入获取标题的值。当您删除hide类时,您可以看到集合中的标题。但是,弹出窗口将新元素插入到DOM中。这些新元素由Bootstrap渲染而不是由Blaze渲染,所以输入不会被填入title的值。

您可以做的是在显示弹出窗口时将事件处理程序附加到弹出窗口。类似这样的:

Template.one.onRendered(function(){ 
$('.popover-markup > .trigger').popover({ 
     html: true, 
     content: function() { 
      return $('.content-popover').html(); 
     }, 
     container: 'body', 
     placement: 'auto top' 
    }).on('shown.bs.popover', function() { 
     $('.popover-content #post_edit_title').val(this.data.title); 
    }.bind(this)); 
}); 

正如你所看到的事件shown.bs.popover可以用来做一些初始化。在事件处理程序中设置输入的值。 让jquery选择器在弹出窗体中查找输入非常重要,这就是选择器以.popover-content开头的原因。否则,它会将值设置为模板中定义的第一个输入。

另外需要注意的是使用bind(this)。这附加this并使其在事件处理程序内部可用,以便您可以获得标题的值。

顺便说一句,popover结束时还有一个hidden.bs.popover事件。