// html view
<div class="error" ng-show="error && error !== 'timeout' && !reset">Login failed</div>
在js控制器文件中我有一些逻辑,它基本上执行POST ajax请求,然后返回响应,如果登录失败,我想在上面显示'错误'div。
// js file
LoginService.prototype.signIn = function(email, password) {
var url = $rootScope.rootDomain + '/user/login/new-ui';
var extraParams = { callback: 'JSON_CALLBACK', email: email, password: password };
$http({
url : url,
method : 'POST',
data : $.param(extraParams),
headers : { 'Content-Type' : 'application/x-www-form-urlencoded' }
})
.then(function(data) {
$localStorage.$reset();
// get ajax response and if success is 0 then login failed, show a hidden div
if ( data.data.success == 0 ) {
$rootScope.error = true;
return;
}
有人可以在我的javascript / angular文件中建议出错吗?
答案 0 :(得分:1)
你的声誉非常高,远远高于我的,所以我不应该告诉你有关问题的分离,但是,看起来你的服务中有逻辑(LoginService?)真的应该属于在控制器中。无论是那个或命名都让我失望。我也不明白你为什么要使用原型。这是什么目的?
此外,在$rootScope
上设置属性即使是新手也知道不要这样做。所以,我假设你已经知道了所有这一切,这个例子就是那些奇怪的一次性,其中向上是向下,向左是正确的,你只需要让它工作......
您似乎需要在模板中正确引用$rootScope
:
<div class="error" ng-show="$root.error && $root.error !== 'timeout' && !reset">Login failed</div>
这不是一个错字。在模板中,您使用$rootScope
访问$root
。当我第一次看到它时,这让我陷入了困境。此外,我无法查看reset
的定义位置,因此我假设它对示例并不重要。