2016-11-11 78 views
0

我有一個MVC剃刀網站,並希望在視圖中顯示我的loading.gif它加載時。 我的設置是這樣的:顯示加載覆蓋,而MVC加載查看

  • 的MainPage是與客戶的網格。
  • 當我點擊在網格中的客戶,我切換到CustomerPage
  • CustomerPage是獲取與他們的信息填寫另外的表格

目前,它儘快顯示加載覆蓋當我點擊客戶在的MainPage,只有改變了,當一切都已經完成了查看加載。我不想那樣。它會造成奇怪的用戶體驗。它需要同時加載信息

這是我_Layout.cshtml相關部分上顯示網格CustomerPage

<div loading-Overlay></div> 
<div id="MainBody" ng-if="!isRouteLoading" ui-view="main"> 
    @RenderBody() 
</div> 

這是我的裝載覆蓋指令:

(function() { 
"use strict"; 
angular 
    .module("myApp") 
    .directive("loadingOverlay", ["$http", 
     function ($http) { 
      return { 
       restrict: "A", 
       replace: true, 
       templateUrl: "./Scripts/app/loading.overlay.html", 
       scope: {}, 
       link: function (scope, element) { 
        scope.isLoading = function() { 
         return $http.pendingRequests.length > 0; 
        }; 
        scope.$watch(scope.isLoading, 
         function (value) { 
          return value ? element.addClass("show") : element.removeClass("show"); 
         }); 
       } 
      }; 
     }]); 

})(); 
+0

當指令被加載時,您只設置了'scope.isLoading'一次。你也需要觀察這個變量(或者只是添加一個控制器代碼)。 – strelok2010

+0

我怕我甚至不知道你想看到它的控制器編碼的一部分。誰處理這個項目的傢伙走了,現在我來處理它(同時學習兩種MVC和Angularjs,因爲我去) – FullStackDAU

+0

好了,要知道,你在路由代碼中使用「解決」? – strelok2010

回答

0

確定。您需要在這裏注意:

scope.$watch(function() { 
    return $http.pendingRequests.length > 0; 
}, function() { 
    return value ? element.addClass("show") : element.removeClass("show"); 
}); 
+0

如果我用這個,裝載覆蓋不顯示在所有:( – FullStackDAU

+0

你全部換成「鏈接」我的代碼代碼,對不對? – strelok2010

+0

是我更換它與你的代碼 – FullStackDAU