2016-09-12 47 views
1

当我添加/编辑blogPost时,我的物体具有所有属性。我的代码:在流星上延伸物体

添加后:

Template.postListAdmin.events({ 
    'submit form': (e) => { 

    // Prevent default browser form submit 
    e.preventDefault(); 

    let image = $('#js-image-uploaded'), 
     draft = $('[name="draft"]'), 
     isSmall = false, 
     isDrafted = false; 

    // If post draft, return true 
    if (draft.is(':checked')) isDrafted = true; 

    // If post image is small 
    // return true for add 'small' classe 
    if (image.height() < 80) isSmall = true; 

    let post = { 
     title: $('[name="title"]').val(), 
     image: image.attr('src'), 
     isSmall: isSmall, 
     description: $('[name="description"]').val(), 
     category: $('[name="category"]').val(), 
     time: $('[name="time"]').val(), 
     dateCreated: dateFormat($('[name="dateCreated"]').val(), 'yyyy-mm-dd'), 
     content: $('[name="content"]').val(), 
     draft: isDrafted 
    }; 

    Meteor.call('posts.insert', post); 

    setTimeout(() => { 
     $('#js-post-form') 
     .toggleClass('is-hidden') 
     .find('input, textarea').val(''); 
    }, 500); 

    } 
}); 

编辑文章:

Template.postEdit.events({ 
    'submit form': function (e) { 

    e.preventDefault(); 

    let image = $('#js-image-uploaded'), 
     draft = $('[name="draft"]'), 
     isSmall = false, 
     isDrafted; 

    if (draft.is(':checked')) isDrafted = true; 
    else isDrafted = false; 

    if (image.height() < 80) isSmall = true; 

    let post = { 
     slug: $('[name="title"]').val(), 
     title: $('[name="title"]').val(), 
     image: image.attr('src'), 
     isSmall: isSmall, 
     description: $('[name="description"]').val(), 
     category: $('[name="category"]').val(), 
     time: $('[name="time"]').val(), 
     dateCreated: dateFormat($('[name="dateCreated"]').val(), 'yyyy-mm-dd'), 
     dateModified: new Date(), 
     content: $('[name="content"]').val(), 
     draft: isDrafted 
    }; 

    Meteor.call('posts.edit', this._id, post); 

    Router.go('postListAdmin'); 

    }, 
}); 

我想优化我的代码,避免创建我的对象 '邮报' 2倍。

你有什么想法我可以优化吗?

谢谢每钦杰:)

+0

将相等部分拉入功能或将编辑模板嵌套在管理员编辑模板中。 – MasterAM

+0

你有个例子吗?我还没有真正理解:( –

+0

)你有一些阅读方法可以做,看一下重构和阅读[流星指南](https://guide.meteor.com/)。它会教你很多。我喜欢“头先头”的方法,有些东西需要通过RTFM学习,另外,不要用超时来改变你的视图,因为流星的方法有回调的原因 – MasterAM

回答

0

您应该能够达到你想要通过定义后没有let关键字做什么。

例如:

post = { 
    title: $('[name="title"]').val(), 
    image: image.attr('src'), 
    isSmall: isSmall, 
    description: $('[name="description"]').val(), 
    category: $('[name="category"]').val(), 
    time: $('[name="time"]').val(), 
    dateCreated: dateFormat($('[name="dateCreated"]').val(), 'yyyy-mm-dd'), 
    content: $('[name="content"]').val(), 
    draft: isDrafted 
}; 

你必须决定要如何处理这两个实例,不过,因为他们是不完全一样的。另外,将变量定义移到任何一个文件之外可能对组织您的代码很有帮助。您可以在名为utils的客户端上使用目录,并添加一个包含全局变量定义的文件。

+0

嗨,我已经测试过定义我的其他文件,但是 –

+0

在Meteor中,你可以通过声明一个全局变量而不用'let'或'var'关键字来设置全局变量,所以只需使用'post ='而不是'let post ='或者'var post ='。 – NFab