我是編程新手,所以如果這看起來很明顯,我很抱歉。我在這之前花了好幾個小時才問這個問題,所以我希望這是好的。流星/蒙哥 - 從模板中檢索_id以在函數中使用
我想要檢索一個mongo文檔的ID,以便我可以更新它(通過表單)。
我會告訴我到目前爲止什麼:
鐵路由器通過URL帶我到頁面:
Router.route('companyDetails', {
name: 'companyDetails',
template: 'companyDetails'
});
模板顯示蒙戈文件(它的工作):
<template name = "companyDetails">
<h3>Update your Company Details</h3>
<form class = "companysave">
<dl>
{{#each company}}
id is: {{_id}}<br>
<p><input type = "text" value="{{name}}" name="companyName" size="35"></p>
<p><input type = "text" placeholder="{{phone}}" name="companyPhone" size="35"></p>
<p><input type = "text" placeholder="{{web}}" name="companyWeb" size="35"></p>
<p><input type = "text" placeholder="{{twitter}}" name="companyTwitter" size="35"></p>
<p><input type = "text" placeholder="{{facebook}}" name="companyFacebook" size="35"></p>
{{/each}}
</dl>
<p><input type="submit" value="Reset">
<input type="submit" value="Update"></p>
</form>
模板幫手文檔數據發送到模板:就是試圖讓
Template.companyDetails.helpers({
'company': function(){
return Organisations.find();
}
})
模板將更新信息發送到服務器上的方法的文檔ID:
Template.companyDetails.events({
'submit form': function(event){
event.preventDefault();
var documentId = this._id;
var name = $('[name=companyName]').val();
var web = $('[name=companyWeb]').val();
var twitter = $('[name=companyTwitter]').val();
var facebook = $('[name=companyFacebook]').val();
Meteor.call('updateCompanyDetails', documentId, name, web, twitter, facebook);
}
});
我也有一個服務器方法,但我目前卡在模板事件中的上述功能。
我收到的錯誤是基於:
var documentId = this._id;
它來通過爲未定義。有趣的是,如果你看看模板本身,我正在寫一些調試信息:
id is: {{_id}}<br>
它顯示正確的ID。所以模板有ID。它加載並顯示來自mongo文檔的數據,但我無法從模板事件中檢索它。
任何人都可以提供一些建議,我在這裏做錯了什麼?
再一次,我對這個(以及一般的編程)很陌生,所以它可能是一個手巴掌時刻。
太感謝了,羅布
非常感謝Stephen。這個答案正是我所需要的,現在它變得更有意義。你可以看到我的初學者的錯誤,一旦你指出他們,我希望我不會再犯這些錯誤。我真的很感謝這樣一個徹底的答案,其背後的理由而不僅僅是一些代碼。再次,非常感謝。 – robster