我使用偉大的aldeed:MeteorJS autoform包。我有一個自定義表單,可以讓我創建數據庫條目。MeteorJS AutoForm.Hooks不更新文檔
其中一個用戶輸入的表單字段是針對郊區的,我使用的是sergeyt:typeahead包,在用戶輸入時對此提出建議。
建議採用用戶熟悉的格式(本質上是「郊區,州,郵編」)。我稱之爲長途郊區。
然後,我使用AutoForm掛鉤之前從用戶選擇/輸入的longsuburb值中分離出Zipcode(「郵編」)值和「郊區」值。然後鉤子在提交之前將郊區和郵編值插入到文檔中。
這一切都很好。
現在我想創建一個編輯表單,用戶可以編輯詳細信息(按照計劃,我打算使用相同的表單來處理這兩個表單,但由於我是新手,所以我一次只能執行一個步驟)。
我已經設置了一個編輯表單模板,並根據AutoForm示例將類型設置爲「update」。
我可以成功編輯所有表單詳細信息並將它們保存到集合中,但我的AutoForm掛鉤似乎根本不會被調用,因此文檔的「郊區」和「郵編」值保留提交時也是如此。
我已經嘗試了幾種不同的方法,但主要是在黑暗中拍攝,所以任何建議都會很棒。
這裏的編輯表單模板
<template name="editBar">
{{#autoForm collection="Bars" id="editBarsForm" template="bootstrap3-horizontal" label-class="col-sm-3" input-col-class="col-sm-9" type="update" doc=this}}
<fieldset>
<legend>Edit Bar</legend>
{{> afQuickField name='bar_name' placeholder="Name of the Bar, Pub, Venue" class="form-control typeahead" }}
{{> afQuickField name='image' class="form-control typeahead" }}
{{> afQuickField name='url' placeholder="Venue's Website" class="form-control typeahead" }}
{{> afQuickField name='longsuburb' placeholder="Suburb" class="form-control typeahead" autocomplete="off" spellcheck="off" data-source="getSuburbs"}}
{{> afQuickField name='barType' options=bartypes class="selectpicker"}}
</fieldset>
<button type="submit" class="btn btn-primary submit">Submit</button>
<a class="btn btn-danger delete" href="#">Delete post</a>
<a class="btn btn-default cancel" href="#">Cancel</a>
{{/autoForm}}
</template>
這裏就是我在編輯表單JS文件
Template.editBar.helpers({
getSuburbs: function() {
return AuPostcodes.find().fetch().map(function(it){ return it.longsuburb; });
console.log('it');
},
bartypes: function() {
return [
{label: "Select", value: ""},
{label: "Bar", value: "bar"},
{label: "Pub", value: "pub"}
];
}
});
Template.editBar.rendered = function(){
Meteor.typeahead.inject();
};
//Split out suburb and postcide from form's longsuburb string and submit with doc to Bars collection.
//"suburb" currently used for filtering.
AutoForm.hooks({
editBarsForm: {
before:{
insert: function(doc) {
var suburbString = doc.longsuburb;
var postcode = suburbString.substring(suburbString.lastIndexOf(",")+2,suburbString.length);
var suburb = suburbString.substring(0,suburbString.indexOf(","));
doc.postcode = postcode;
doc.suburb = suburb;
return doc; //autoFrom magic commence
}
}
}
});
Template.editBar.events({
'click .delete': function(e) {
e.preventDefault();
if (confirm("Delete this bar?")) {
var currentBarId = this._id;
Bars.remove(currentBarId);
Router.go('barsList');
}
},
'click .cancel': function(e) {
e.preventDefault();
Router.go('barsList');
}
});
添加模板和代碼都大致相同。正如我所說的,對於創建記錄來說,這一切都很好。我還可以編輯名稱,網址,longsuburb等,並將它們保存到數據庫中。這只是插件不工作。
我已經更新了從「插入」到「更新」在JS鉤和我在瀏覽器控制檯以下錯誤:'[錯誤]類型錯誤: undefined不是一個對象(評估'suburbString.substring')' – SLRM