Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在大气包创建的模板中向DOM元素添加类?_Javascript_Meteor_Meteor Accounts - Fatal编程技术网

Javascript 在大气包创建的模板中向DOM元素添加类?

Javascript 在大气包创建的模板中向DOM元素添加类?,javascript,meteor,meteor-accounts,Javascript,Meteor,Meteor Accounts,我目前正在使用Meteor、MaterialeCSS大气包和用户帐户:materialize atmosphere包。我正在尝试使用基于materialize类的样式来更改用户帐户的样式:materialize登录页面,该页面由{{>atForm}模板创建 Template.atForm.onRendered( function(){ var element = $(".at-form, .at-btn"); element.addClass("grey lighten-2 grey-t

我目前正在使用Meteor、MaterialeCSS大气包和用户帐户:materialize atmosphere包。我正在尝试使用基于materialize类的样式来更改用户帐户的样式:materialize登录页面,该页面由{{>atForm}模板创建

Template.atForm.onRendered( function(){
  var element = $(".at-form, .at-btn");
  element.addClass("grey lighten-2 grey-text text-darken-4");
});
这在最初呈现页面时非常有效。但是,如果我先登录,然后再注销,则会再次显示登录模板,但这次不会调用onRendered函数,我的样式也会丢失。我如何避免这种情况

还有没有比调用onRendered更好的方法来影响第三方模板中的元素呢?

我建议使用来覆盖您自己的包模板。我认为这是一种更简单的方法

@凯尔-我认为自述文件是一个足够的例子;以下是您可以如何使用它:

使用以下内容将包添加到meteor项目:

meteor add aldeed:template-extension
添加新模板

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

问题是at表单的子模板会发生变化。您需要为它们中的每一个处理onRendered,以确保您的类都应用于它们。

除了链接之外,这个答案几乎不包含任何信息。您能否编辑它以反映您的解决方案?例如,您可以包括一个代码演示。如果我理解的意图。它将完全覆盖原始模板。考虑到我的目标是更改该模板生成的仅一个元素的类,这对于我在这个特定实例中试图实现的目标来说太具有侵入性了。这当然是一个选项,但如果我必须完全替换该模板,我还可以分叉useraccounts:materialize包并直接对模板进行更改。谢谢你!
Template.myTemplate.replaces("originalTemplateName");