2015-06-30 44 views
0

我目前正在使用Meteor,物化气氛包和用户帐户:实现气氛包。我试图使用实现基于类的样式来更改用户帐户的样式:实现登录页面,该页面由{{> atForm}}模板创建。向气氛包创建的模板中的DOM元素添加一个类?

Template.atForm.onRendered(function(){ 
    var element = $(".at-form, .at-btn"); 
    element.addClass("grey lighten-2 grey-text text-darken-4"); 
}); 

这项工作很好,当页面最初呈现。但是,如果我登录并注销,登录模板将再次显示,但此时不会调用onRendered()函数,并且我的样式会丢失。我如何避免这种情况?

是否有更好的方式来影响第三方模板内的元素比调用onRendered()?

回答

0

我会建议使用https://github.com/aldeed/meteor-template-extension覆盖您自己的包模板。我认为更简单的方法。

@Kyll - 我假设README已经足够了一个例子;这里是你如何使用它:

包添加到流星的项目有:

meteor add aldeed:template-extension 

添加新模板

<template name="myTemplate">...</template> 

在启动代码在客户端,覆盖模板:

Template.myTemplate.replaces("originalTemplateName"); 
+0

此答案包含几乎没有信息,除了链接。你能编辑它来反映你的解决方案吗?例如,您可以包含代码演示。 –

+0

如果我理解.replaces()的意图,它会完全覆盖原始模板。这对于我在这个特定实例中试图完成的内容来说太具有侵入性,因为我打算只更改由该模板生成的一个元素的类。它绝对是一个选项,但如果我必须完全替换该模板,我可能会分叉useraccounts:实现包,并直接对模板进行更改。虽然谢谢! – Scott

0

问题是at-form有改变的子模板。你需要为他们每个人处理他们的问题,以确保你的课程适用于他们。

相关问题