根据返回响应设置范围

时间:2016-08-23 12:43:51

标签: javascript angularjs angularjs-scope

// 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文件中建议出错吗?

1 个答案:

答案 0 :(得分:1)

你的声誉非常高,远远高于我的,所以我不应该告诉你有关问题的分离,但是,看起来你的服务中有逻辑(LoginService?)真的应该属于在控制器中。无论是那个或命名都让我失望。我也不明白你为什么要使用原型。这是什么目的?

此外,在$rootScope上设置属性即使是新手也知道不要这样做。所以,我假设你已经知道了所有这一切,这个例子就是那些奇怪的一次性,其中向上是向下,向左是正确的,你只需要让它工作......

您似乎需要在模板中正确引用$rootScope

<div class="error" ng-show="$root.error && $root.error !== 'timeout' && !reset">Login failed</div>

这不是一个错字。在模板中,您使用$rootScope访问$root。当我第一次看到它时,这让我陷入了困境。此外,我无法查看reset的定义位置,因此我假设它对示例并不重要。