事件与路由器绑定

2024-03-07

我在用着导航网 https://github.com/krasimir/navigo对于一个小网站。用户被要求登录到登陆页面上的帐户,然后在验证其帐户后路由到主模板。

页面对象是从 Firebase 数据库填充的,因此我初始化一个类并将多个事件和页面元素绑定到原型方法,以便user对象来自firebase.auth()可以更容易地传递。

我可以在主索引页面上加载并登录。当页面更新模板时,事件处理程序会中断,因为登录页面上不存在元素(个人资料图片等)。当页面尝试更新事件(甚至 HTML 元素)时,引用错误会中断页面​​加载。

Update

通过使用.then()等待 firebase 承诺,我可以在身份验证后刷新页面并查看所有更新的数据。但是,初始路由仍然会引发引用错误,因为元素尚未创建。

已验证.html 模板

<!-- language: lang-html -->
<div class="user-view">
  <img id="user-pic" class="circle" src="" />
  <button id="sign-out-button" class="waves-effect waves-light btn blue">Sign-out</button>
  <div id="string-name" class="white-text name"></div>
  <div id="user-email" class="white-text email"></div>
</div>

main.js

function MainObj() {
  this.userPic = document.getElementById('user-pic');
  this.stringName = document.getElementById('string-name');

  this.initFirebase()
}

MainObj.prototype.initFirebase = function() {
  this.auth = firebase.auth();

  this.auth.onAuthStateChanged(this.onAuthStateChanged.bind(this));
}

MainObj.prototype.signIn = function() {
  var provider = new firebase.auth.GoogleAuthProvider();
  this.auth.signInWithPopup(provider).then(user => {
    // This navigates after login, but elements still throw reference errors without a full page refresh
    router.navigate('main');
  });
}

MainObj.prototype.onAuthStateChanged = function(user) {
  // user is signed in
  if(user) {
    router.navigate('main') // route from root to main template
    this.userPic.setAttribute('src', user.photoURL);
    this.stringName.textContent = user.displayName;
  } else {
    router.navigate('login') // route back to login
  }
}

错误:

Uncaught (in promise) TypeError: Cannot read property 'addEventListener' of null

有没有办法动态加载带有模板文件的脚本,以便在脚本执行之前填充 DOM?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

事件与路由器绑定 的相关文章

  • 在 Javascript 中,有什么方法可以知道从哪个主机脚本加载?

    在javascript中 作为从某个主机加载的脚本 有什么方法可以知道我是从哪个服务器 主机加载的 我需要向该主机发出额外的 ajax 请求 并且更愿意动态地找出主机 因此 如果您在页面上包含 javascript 文件 当该 javasc
  • 如何删除事件监听器?

    下面是我的事件监听器代码 window addEventListener beforeunload function e if sessionStorage token abide call api 如果我想删除这个事件监听器 我该怎么办
  • 需要禁用引导时间选择器的输入

    我正在使用 Bootstrap 时间选择器 我已经成功实施了 但我需要的是用户只能在 30 分钟间隙内插入 例如 10 00 10 30 11 00 等 为此我尝试过的是minuteStep如下图所示 效果完美 fantasyleague
  • 如何使用 AngularJS、Devise 和 UI Router 全局实现身份验证?

    我对 Angular 很陌生 所以这可能是一个新手问题 我正在尝试实现一个简单的任务管理器 只是一个练习 以 Rails 作为后端 以 Angular 作为前端 到目前为止 我遵循了教程 一切正常 现在我想在全球范围内实施身份验证 这意味着
  • 通过搜索查找下一个文本并突出显示不起作用

    当在搜索框中搜索任何文本时 它可以找到并突出显示正确的文本 但是当搜索下一个 新文本时 它无法找到下一个 新文本 再次搜索时它不起作用 我无法找到问题 这JS below JS button search click function va
  • 如何在 jQuery 中使用 CSS“background-image”属性添加的图像上绑定单击事件

    这是我的小提琴link http jsbin com otisur 1 edit 我想我的问题通过标题本身就很清楚了 尽管如此 我正在寻找一种绑定的方法click使用 css 添加的图像上的事件background image财产 我知道
  • 使用 jQuery 的 javascript 关联数组长度

    我正在使用 javascript 关联数组 例如 var testarray testarray one 1 testarray two 2 testarray three 3 我也在旁边使用jquery 如何使用 jquery 或任何其他
  • 在js中检测浏览器的最佳方法

    JavaScript 中有很多浏览器检测方法 据我所知 使用navigator userAgent或检测特征 例如XMLHttpRequest 等等 谁能告诉我哪种方法最好 最有效 如果你真的需要知道什么browser他们正在使用 你主要需
  • Hydrate with RTK Query 确实会抛出错误

    我有一个非常简单的组件来显示来自本地 API 的数据 使用 Nextjs API 路由制作 我使用 RTK 查询来获取数据 const api createApi reducerPath data baseQuery fetchBaseQu
  • 如何使用 jQuery UI Sortable 正确相交?

    这是我对 jQuery UI Sortable 进行动画处理的尝试 https codepen io anon pen YdMOXE https codepen io anon pen YdMOXE var startIndex chang
  • json、rails、javascript 中的解析错误

    我需要将 ruby 数组放入 javascript 数组中 但出现解析错误 var characters 这就是我将 ruby 嵌入到内联 javascript 中的方式 但它出现了解析错误 我应该如何将此 ruby 数组放入 javasc
  • 如何按值删除数组中的多个项目?

    我正在尝试做一个removeAll 函数 它将删除具有该特定值 而不是索引 的数组的所有元素 当我们对循环进行任何更改时 棘手的部分就出现了 索引往往会移动 使其很难像我们想要的那样工作 并且每次更改时都重新启动循环 这在大数组上效率非常低
  • backbone.js:视图中影响集合中不同模型的按钮

    我刚刚开始使用backbone js 到目前为止 我真的很喜欢它 我有这样的事情 ModelA ModelB ViewA ViewB ModelA 持有 ModelB 的集合 如何使用按钮构建模型 B 的视图 单击该按钮会更改集合中下一个
  • 在部分渲染时执行 JavaScript

    我有一些 JavaScript 代码 我想在用户单击其文件夹之一后执行 它会触发 show 操作和 show js erb 从而呈 现部分内容 Show js erb 当用户单击其文件夹之一时触发 如下所示 body append 它成功注
  • React TypeError:x 不是函数

    我在子组件中从父组件调用函数 booksRefresh 但出现错误 类型错误 booksRefresh 不是函数 我不知道为什么 因为 booksRefresh 是一个函数 有人可以帮我解释为什么会出现这个错误吗 这是我的代码 import
  • 需要根据用户选择有条件地渲染具有 X 行数的部分

    我有一个反应组件 其中包含一个下拉列表 其中的选项包括none 1 5 and 13 根据用户选择的数字 我需要渲染一个部分 其中包括许多行 每个行都有字段名称和下拉列表 如果用户不选择任何一个 我需要整个附加配置部分消失 新部分中的每个下
  • 使用 Javascript 检测 Pepper (PPAPI) Flash

    我们使用的是专有的文档查看器 它与某些 Chrome 版本中的 Pepper 版本的 Flash 配合得不太好 所以我希望能够检测到它并重定向到不同格式的相同内容 由于这个版本似乎落后于 NPAPI 版本 所以我一直在使用闪光检测 http
  • 通过ajax执行后期操作时如何克服CORS重定向问题?

    我可以通过外部登录表单中的 post 方法类型提交表单来登录 roundcube 实例 托管在另一台服务器上 我收到此错误 通过 ajax 签名时 XMLHttpRequest 无法加载https 192 168 0 7 mail http
  • 允许 iframe 跨域链接到目标父框架

    我有 2 个域 域 1 上的一个页面使用 iframe 加载域 2 中的内容 如何允许来自domain2 iframe 内 的链接在domain1 的完整父框架中打开 我一直在关注IE和w3c的新沙箱属性 http www w3 org T
  • 是否可以将 Cypress e2e 测试与 firebase auth 项目结合使用?

    我正在探索 Cypress 进行 e2e 测试 看起来是很棒的软件 问题在于身份验证 Cypress 文档解释了为什么使用 UI 非常糟糕here https docs cypress io guides getting started t

随机推荐

  • 在 WPF 中将 DataSet 绑定到 DataGrid

    我知道这个问题之前已经被问过好几次了 但我无法得到这个 我有一个DataSet and a DataGrid 我想做的就是显示内容DataSet in the DataGrid 我写了这段代码 vConn new OleDbConnecti
  • 如何配置Intellij Idea live模板的适用上下文?

    我想为我的自定义文件类型创建一个实时模板组 但是当我选择适用的上下文时 除了我的自定义文件类型之外 还有一个文件类型或语言类型的列表 该列表是预定义的并且不能扩展吗 可用的上下文类型取决于启用的插件 Jetbrains 帮助页面中是这么说的
  • MapViewOfFile 失败,错误代码 6(无效句柄)

    我尝试将文件映射到内存并使用 MapViewOfFile 但它失败并显示错误代码 6 我尝试了几乎所有方法 我还读到大文件是问题所在 但问题也发生在 1kb 文件上 my code HANDLE hFile CreateFile pFile
  • java.lang.Thread.interrupt() 的作用是什么?

    你能解释一下什么吗java lang Thread interrupt 何时调用 Thread interrupt 设置目标线程的中断状态 标志 然后在该目标线程中运行的代码可以轮询中断状态并适当地处理它 一些阻止的方法 例如Object
  • 为什么 height: 0 不隐藏我的填充

    我有一个 div 带衬垫 我已将其设置为height 0 并给出它overflow hidden and box sizing border box div webkit box sizing border box moz box sizi
  • Do while javascript问题

    我试图在 do while 循环中发送多个帖子 但结果未添加
  • 如何从命令行更新 SSDT 项目?

    我希望能够使用SSDT SQL Server Data Tools 将我们的数据库模式置于版本控制之下 将数据库导入到 Visual Studio 中的 SSDT 项目中会创建数据库架构的良好文本表示形式 适合版本控制 现在的问题是 当对数
  • 在 Java 中格式化时间戳

    我希望以以下格式生成当前时间戳yyyy MM dd HH mm ss 我编写了以下代码 但它总是给我这种格式yyyy MM dd HH mm ss x 你如何摆脱 x part DateFormat df new SimpleDateFor
  • 根据图片名称获取url文件

    大家好 我在 WordPress 的媒体文件夹中有几张图片 当保存新图像时 WordPress 保存为年 月 name png wp content uploads 2011 01 matt png 是否可以按名称查找图像并返回 url 文
  • XCode - 动态创建的标签,当我更改文本时,它仅更改最后一个标签

    所以我有一堆动态加载的标签 他们每个人都有相同的名字 因为不知道会有多少人 我有另一种方法 不是创建标签的方法 更改其中一个标签的文本 但是当我运行它时 只有创建的最后一个标签会更改 我需要它来更改具有特定标签或其他内容的那个 非常感谢帮助
  • 获取列表中每 n 个项目的一大块项目

    假设我有以下列表 l 4 3 1 5 3 5 8 11 10 4 12 2 1 最Pythonic的切片方式是什么l为了获得长度块n离开k块之间的项目 例如 如果n 2 and k 3结果应该是 4 3 5 8 12 2 使用列表理解 e
  • Xamarin.Forms 中的圆形图像

    我需要在 Xamarin Forms 中使用带有圆角的图像控件 但我没有找到任何可以做到的财产 如何制作圆形图像 我用FF图像加载 https github com molinch FFImageLoading图书馆CachedImage对
  • 将动态数组传递给 C 中的函数

    我正在尝试创建一个函数 该函数将数组作为参数 向其添加值 如果需要 增加其大小 并返回项目的计数 到目前为止我有 int main int argc char argv int mSize 10 ent a mSize int n n ad
  • 无法使用 py2exe 以“Domain\ComputerName”pyodbc 身份登录

    好的 我有一个连接到 mssql 数据库的脚本 我需要作为我已经完成的服务运行 但是当我将它作为服务运行时 它会覆盖我在使用以下命令连接到数据库时输入的凭据 广告计算机帐户 当我单独运行它而不是作为服务运行时 它运行得非常完美 我的连接字符
  • PDF 和 MFMailComposeViewController

    编写允许用户生成 pdf 并发送的应用程序部分 似乎工作正常 发送的 PDF 在 MAC 上可以正常打开 但在 iPhone 上它只是不断加载并且永远不会打开 在 Ray Wenderlich 教程的帮助下创建了一个 pdf 文档 并通过带
  • Delphi RTTI:获取属性的类

    使用Delphi 2010和RTTI 我知道如何获取对象的类类型以及如何获取 设置对象属性的值和类型 但是如何确定属性来自继承链中的哪个类 我想以不同于主类的方式使用基类的属性 考虑这段代码 TClassBase class TObject
  • 使用 SQL 对列表排序还是作为集合排序?

    我的数据库中有一些带有日期的条目 什么是最好的 用sql语句获取它们并应用order by 使用 sql 获取列表 并在应用程序中对它们进行排序collection sort or so Thanks 这是一个非常广泛的问题 很难回答 这在
  • Rust 进程使用 GitHub 操作失败,退出代码为 101

    该代码在我的本地计算机上运行良好并且没有给出任何错误 但是当我推送到 GitHub 时 构建失败了 这是我的工作流程文件的块 runs on matrix platform steps name Checkout Repository us
  • Delphi 多索引通用列表

    我正在寻找一种 TList 后代 它可以让我添加一个或多个索引 并让我通过这些索引进行搜索和查看 30分钟的谷歌搜索让我一无所获 以前肯定需要这个 我的意思是 有多少次您有一个内存索引集合 然后需要以不同的顺序显示它 Thanks AJ 你
  • 事件与路由器绑定

    我在用着导航网 https github com krasimir navigo对于一个小网站 用户被要求登录到登陆页面上的帐户 然后在验证其帐户后路由到主模板 页面对象是从 Firebase 数据库填充的 因此我初始化一个类并将多个事件和