编程技巧 - 添加/编辑表单封装 ¶
作者:KK
发表日期:2016.11.07
有的程序员经常在做后台时有这么个烦恼:添加和编辑页面很相似,但他们总是要开发两个不同的模板页面,而且有修改时,改了一个又忘记改另一个,还有其它相关具体场景的维护问题
核心问题:能否只写一个模板实现添加、修改共用? ¶
可以的,比如一个文章添加、编辑模板,我会封装成JS对象作为一个文章编辑页面插件,传相参数构造相应状态的界面:
var articlePage = {
categories : [],
buildForm : function(article){
var categoriesHtml = '<option value="0">请选择</option>';
for(var i in this.categories){
var category = this.categories[i];
var select = category.id == article.category_id ? ' selected' : '';
categoriesHtml += '<option value="' + category.id + '"' + select + '>' + category.name + '</option>';
}
return '<form>\
<input type="hidden" name="id" value="' + article.id + '"/><br/>\
标题:<input type="text" name="title"/><br/>\
文章分类:<select name="category_id">' + categoriesHtml + '</select>\
内容:<textarea name="content">' + article.content + '</textarea>\
</form>';
},
buildDefaultData : function(){
return {
id : 0,
category_id : 0,
content : ''
};
}
};
//这里以PHP的模板为演示
var articlePage.categories = <?php echo json_encode($categories); ?>;
var isAdd = location.href.indexOf('/add.html') !== -1;
var article = isAdd ? articlePage.buildDefaultData() : <?php echo json_encode($article); ?>;
$('body').html(articlePage.buildForm(article));