Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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_Angularjs_Dom_Firebase - Fatal编程技术网

Javascript 在DOM中持久化数据

Javascript 在DOM中持久化数据,javascript,angularjs,dom,firebase,Javascript,Angularjs,Dom,Firebase,我在Firebase应用程序中工作,我需要在DOM中保留一些数据,一旦用户登录,您就可以看到用户名和电子邮件,但一旦您刷新页面,用户仍会登录,但这些数据会从DOM中消失 <div class="item"> {{::userDisplayInfo.name}} </div> <div class="item"> {{::userDisplayInfo.email}} </div> 那么,我应该怎么做才能将用户和电子

我在Firebase应用程序中工作,我需要在DOM中保留一些数据,一旦用户登录,您就可以看到用户名和电子邮件,但一旦您刷新页面,用户仍会登录,但这些数据会从DOM中消失

  <div class="item">
    {{::userDisplayInfo.name}}
  </div>
  <div class="item">
    {{::userDisplayInfo.email}}
  </div>

那么,我应该怎么做才能将用户和电子邮件持久保存在DOM中呢?

大多数现代浏览器都支持HTML5本地存储。首先,检查浏览器是否支持以下操作:

if(typeof(Storage) !== "undefined") {
    // localStorage is OK to use
} else {
    // no localStorage support
}
然后,要设置数据,只需执行以下操作:

// Set
localStorage.setItem("user", userId);

// Get
var userId= localStorage.getItem("user");

请记住在您注销时清除该值,因为即使在浏览器关闭并重新打开后,localStorage仍然存在。

暂时保持简单,使用$cookies:

// $cookies injected somewhere above
$cookies.put('userEmail', $scope.userDisplayInfo.email');
然后验证用户是否已登录:

// $cookies injected somewhere above
if ($cookies.get('userEmail')) {
    // user is logged in
}

我需要下载任何库,如果是的话,名称是什么?这适用于所有浏览器?是的,每个浏览器都适用$cookies是angular的一部分,您只需要包含angular-cookies.js脚本。阅读以下内容:查看onauth的文档。这将在重新加载时触发,您可以从那里加载用户的数据。@FrankvanPuffelen是的,但从onauth我无法检索来自此处的用户和电子邮件
var val=snapshot.val()$scope.$apply(函数(){$rootScope.name=val;})
该代码在
$onAuth
上应该可以正常工作。看见
// $cookies injected somewhere above
if ($cookies.get('userEmail')) {
    // user is logged in
}