2013-01-07 115 views
2

我剛剛開始弄亂Meteor,並且無法獲得以下代碼,以便在觸發事件時更新數據庫。我甚至可以在消失之前看到帶有文本字段值的頁面更新(假設一旦Meteor意識到該值未寫入服務器)。通過控制檯插入工作得很好......是否有一些我忽略的基本概念?簡單的流星插入不工作

file.js

var Tasks = new Meteor.Collection("Tasks"); 

if (Meteor.isClient) { 

    Template.main.task = function() { 
     return Tasks.find({}); 
    }; 

    Template.main.events = { 
     'click #submit' : function(event) { 
      var task = document.getElementById("text").value; 
       Tasks.insert({title: task}); 
     } 
    }; 
} 

file.html

<body> 
    {{> main}} 
</body> 

<template name="main"> 
    <form class="form-inline"> 
     <input type="text" id="text" class="input-small" /> 
     <input type="Submit" class="btn" id="submit" value="Submit"/> 
    </form> 
    {{#each task}} 
     <span id="output">{{title}}</span> 
    {{/each}} 
</template> 

回答

4

你的提交按鈕的問題之前執行你的JavaScript取消您向服務器請求一個頁面重新加載。

嘗試使用'mousedown'而不是'點擊'或(更好)阻止按鈕進行頁面重新加載。

嘗試使用此片段,它會禁用按鈕的提交,因此只會執行您的JavaScript。

<body> 
    {{> main}} 
</body> 

<template name="main"> 
    <form class="form-inline"> 
     <input type="text" id="text" class="input-small" /> 
     <button type="button" class="btn" id="submit">Submit</button> 
    </form> 
    {{#each task}} 
     <span id="output">{{title}}</span> 
    {{/each}} 
</template> 

我改變你的第二個<input> -tag到按鈕,並設置它的類型屬性「按鈕」,使按鈕無可奈何。

+0

這樣做,謝謝! – mstanton