2016-08-23 32 views
0

// HTML視圖組範圍

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

在js控制器文件我有一些邏輯,基本上做了POST Ajax請求,然後返回響應,如果登錄不成功我想要顯示上面的'錯誤'div。

// js文件

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 /角文件中的錯誤?

+0

你的網絡反應是什麼樣的? – cport1

+0

html是在頭部分還是相對於路由? –

回答

1

你有很高的聲望,高於我的聲譽,所以我不應該告訴你關於分離問題,但是,它看起來像你的服務(LoginService?)中的邏輯真的應該屬於一個控制器。無論是那種命名都會把我拋棄。我也不明白你爲什麼使用原型。那是什麼目的?

此外,設置屬性$rootScope是甚至小白知道不該做的事情。所以,我假設你已經知道所有這些,而這個例子就是那些奇怪的一次性事件之一,其中向上和向左都是正確的,你只需要使它工作...

它看起來很像像你需要在你的模板來引用$rootScope正確:

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

這不是一個錯字。在模板中,您使用$root訪問$rootScope。當我第一次看到它的時候,這讓我不知所措。另外,我看不到reset是在哪裏定義的,所以我認爲這個例子並不重要。

+0

啊,這是一個有用的FYI約$根;感謝那!儘管如此,我還是會考慮將其修改爲使其正常工作的一點,並將其他部分留給[Code Review.SE](http://codereview.stackexchange.com/)(儘管我必須承認,我也抵制提出建議)。 –