Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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 我的范围变量的奇怪行为_Javascript_Angularjs - Fatal编程技术网

Javascript 我的范围变量的奇怪行为

Javascript 我的范围变量的奇怪行为,javascript,angularjs,Javascript,Angularjs,我是这个领域的新手,想写一个应用程序,现在我遇到了一些问题。这是我的代码的一个简单版本,我想要的是API只显示signUp。在我按下signUp并按下submit后,显示的按钮应仅为signout 现在,我的范围变量不起作用,这里显示两个按钮。你能修改一下并告诉我原因吗?如果可能的话,请使用rootscope和scope以及sc.logIn(),这样我就可以知道如何用这种方式编写。谢谢 一点也不奇怪。 打开控制台,它会显示错误。 您的主要问题是角度引导错误 angular.module('my

我是这个领域的新手,想写一个应用程序,现在我遇到了一些问题。这是我的代码的一个简单版本,我想要的是API只显示
signUp
。在我按下
signUp
并按下
submit
后,显示的按钮应仅为
signout

现在,我的范围变量不起作用,这里显示两个按钮。你能修改一下并告诉我原因吗?如果可能的话,请使用rootscope和scope以及sc.logIn(),这样我就可以知道如何用这种方式编写。谢谢


一点也不奇怪。
打开控制台,它会显示错误。
您的主要问题是角度引导错误

angular.module('myApp.dashboard', [])
-------------------------------   ^^  ------- must be an array even empty 

一点也不奇怪。
打开控制台,它会显示错误。
您的主要问题是角度引导错误

angular.module('myApp.dashboard', [])
-------------------------------   ^^  ------- must be an array even empty 

您的代码有几个问题

每当您在没有第二个参数的情况下声明模块时,它只会尝试获取已声明/定义的模块。为了创建新模块,需要传入依赖项或空数组(如果没有依赖项)

此外,您还需要监视对作用域所做的更改,以确保将更改通知控制器,使其在视图中可见

以下是工作解决方案:

angular.module('myApp',['myApp.dashboard','myApp.signUp']);
角度控制模块('myApp.dashboard',[])控制器('mainControl',mainControl);
函数mainControl($rootScope,$scope){
$rootScope.logged=false;
$rootScope.$watch(()=>$rootScope.logged,函数(){
$scope.logged=$rootScope.logged;
});
}
mainControl.$inject=['$rootScope','$scope'];
角度.module('myApp.signUp',[]).controller('signUpControl',signUpControl);
signUpControl.$inject=['$rootScope','$scope'];
函数注册控制($rootScope){
this.logIn=函数(){
var a=1;
$rootScope.logged=true;
};
}

{{mc.logged}
注册
退出
叹气
&时代;
电邮:
提交

您的代码有几个问题

每当您在没有第二个参数的情况下声明模块时,它只会尝试获取已声明/定义的模块。为了创建新模块,需要传入依赖项或空数组(如果没有依赖项)

此外,您还需要监视对作用域所做的更改,以确保将更改通知控制器,使其在视图中可见

以下是工作解决方案:

angular.module('myApp',['myApp.dashboard','myApp.signUp']);
角度控制模块('myApp.dashboard',[])控制器('mainControl',mainControl);
函数mainControl($rootScope,$scope){
$rootScope.logged=false;
$rootScope.$watch(()=>$rootScope.logged,函数(){
$scope.logged=$rootScope.logged;
});
}
mainControl.$inject=['$rootScope','$scope'];
角度.module('myApp.signUp',[]).controller('signUpControl',signUpControl);
signUpControl.$inject=['$rootScope','$scope'];
函数注册控制($rootScope){
this.logIn=函数(){
var a=1;
$rootScope.logged=true;
};
}

{{mc.logged}
注册
退出
叹气
&时代;
电邮:
提交

为什么不使用
angular.module('myApp')
而不是
angular.module('myApp.dashboard')
?这将是一个很大的应用程序,所以我想将它们分开,同时,为了学习,这段代码有很多错误,如果不重写就很难修复。首先,使用
$rootScope
是一种反模式。其次,通过在
$scope
上创建一个名为相同的新属性,实际上隐藏了
$rootScope.logged
。第三,您正在混合使用
$scope
this
,此时您应该使用其中一种。最后,通过记录
基元属性,您违反了“绑定中始终使用点”的角度绑定原则。底线是,不要使用
$rootScope
,使用服务。@Claies您看到这个问题了吗?如果我这样写,这里需要$watch吗?或者可以提供一个更好的主意?为什么不使用
angular.module('myApp')
而不是
angular.module('myApp.dashboard')
?这将是一个大的应用程序,所以我想将它们分开,同时,为了了解这段代码有很多错误,不需要重写就很难修复。首先,使用
$rootScope
是一种反模式。其次,通过在
$scope
上创建一个名为相同的新属性,实际上隐藏了
$rootScope.logged
。第三,您正在混合使用
$scope
this
,此时您应该使用其中一种。最后,通过记录
基元属性,您违反了“绑定中始终使用点”的角度绑定原则。底线是,不要使用
$rootScope
,使用服务。@Claies您看到这个问题了吗?如果我这样写,这里需要$watch吗?或者可以提供一个更好的主意?您可以将其保留为
angular.module('myApp.dashboard')
此答案修复了脚本问题,并允许angular正确运行。不过,这并没有解决问题的根本问题
$scope.logged
$rootScope.logged
仍然彼此分离,原因在我对的评论中概述