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