Javascript 无法访问html中的$scope值,$http.post success函数中设置的值
我无法访问$http post成功时设置的$scope属性的值。我正在尝试在index.html文件中访问它。下面是代码供参考,请帮助我解决它,我是新的AngularJsJavascript 无法访问html中的$scope值,$http.post success函数中设置的值,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我无法访问$http post成功时设置的$scope属性的值。我正在尝试在index.html文件中访问它。下面是代码供参考,请帮助我解决它,我是新的AngularJs var app = angular.module('formExample', []); app.controller("formCtrl", ['$scope','$rootScope', '$http', function($scope,$rootScope, $http) { $scope.loginur
var app = angular.module('formExample', []);
app.controller("formCtrl", ['$scope','$rootScope', '$http',
function($scope,$rootScope, $http) {
$scope.loginurl = 'loginsubmit.php';
$scope.loginFormSubmit = function(isValid) {
if (isValid) {
$http.post($scope.loginurl, {"username": $scope.username,"password": $scope.password}).
success(function(data, status) {
$scope.status = status;
$scope.data = data;
$scope.isAdmin=data.isAdmin;
$scope.username=data.username;
location.href="Index.html";
})
}else{
alert('Form is not valid');
}
}
html form code
<div class="row" ng-app="formExample" >
<div ng-controller="formCtrl">
<div class"col-md-8"> </div>
<div>username: {{$scope.username}} </div>
您可能需要将location.href超时,以便$scope不会丢失 在重定向之前,您有几个选项可以使您的用户数据成为应用程序的全局数据。您可以将用户变量放在影响所有视图的控制器中,如app.js中的控制器,或将其放在$rootScope或localStorage/sessionStorage中,如注释中的@Marco所示
另外,请使用{{username}}而不是{{$scope.username}。后者不打印任何内容。对于登录和身份验证,我通常执行Marco在其评论中提到的相同操作,并将用户信息存储在$rootScope中。然而,这基本上是我使用它的唯一目的,因为最好避免用一堆东西污染rootScope 我在一个JSFIDLE中为你建立了一个小游乐场,不知羞耻地从本文中偷来: $rootScope和-$scope.html 所有其他答案/评论都很好。我只是想让你拿着这把小提琴玩。通过隔离小问题、测试它们、打破它们并将它们修改成小提琴,我学到了很多东西 编辑:有多种方法可以在角度控制器之间共享数据: 此外,为了解决在没有数据库的控制器之间共享数据的其他方法,您还可以创建一个身份验证“工厂”。服务和工厂是跨控制器共享数据的好方法,我相信它们是实际使用的方法 关于此选项和其他选项的详细讨论如下: 请参阅更新的fiddle with服务示例: 增加了以下内容:
app.service("auth", [ function () {
return {
getAuth: function () {
var info = {
name: "Name",
password: "Password"
}
return info;
}
};
}]);
location.href不是正在重定向页面吗?这将杀死$scope。谢谢Marco,您能建议我如何保留作用域,以便我可以在index.html页面中访问它并显示用户名。如果您使用SPA,则应将数据存储到$rootScope中,如果您不使用SPA,则应将其存储到localStorage中。无论OP是否重定向,$scope都将丢失。javascript在页面之间没有持久性loads@chakeda,您能用timeout&location.href显示您正在描述的行为吗?
app.service("auth", [ function () {
return {
getAuth: function () {
var info = {
name: "Name",
password: "Password"
}
return info;
}
};
}]);