2015-06-19 97 views
2

我正在開發像webapp這樣的電子商務來學習Angular。我的主頁上有一個菜單(在所有頁面上都是共同的和可見的),它提供了可用的產品。書籍,衣服等Angular JS RouteProvider不會調用

在我的菜單我有列表項如下:我的第一個控制器

<li><a href="#/SearchProducts" ng-click="searchProduct('Computers')">Computers</a></li> <li><a href="#/SearchProducts" ng-click="searchProduct('Academics Professional')">Academics & Professional</a></li>

searchProduct功能設置中選定的產品範圍,並設置location.path。

$scope.searchProduct =function(productTBSearched){  
      $scope.TBFProduct=productTBSearched; 
      $location.path("/SearchProducts"); 
     } 

我也有我的第一個控制器中的路由提供者,它是指另一個html和第二個控制器。

$routeProvider.when("/SearchProducts", {     
    templateUrl: "./views/HomeSearchProducts.html" , 
    controller: "productSearchCtrl" 
}); 

在我的第二個控制器,我稱之爲REST WS搜索數據庫並建立我的響應JSON。問題是當我點擊主頁菜單上的第一項,我得到搜索結果,我可以看到我的網址被改爲「....... Index2.html#/ SearchProducts」

現在在此頁面當我嘗試選擇另一個菜單項時,Routeprovider不會再次調用「ProductSearchCtrl」,並且不會爲新選擇的項目執行Ajax調用。任何人都可以幫忙嗎?

+0

首先,沒有一點使用ng-click和href在一起 – nikhil

+2

謝謝Nikhil。它確實有道理。我已經刪除了href,但我仍然有同樣的問題。 – Sunil

+0

我已經添加了一個解決方案。請看看它是否符合你的需求。 – nikhil

回答

2

我認爲你正試圖重新加載路線。你可以更新你的代碼到下面的東西,以重新加載路線。

$scope.searchProduct =function(productTBSearched){  
    $scope.TBFProduct=productTBSearched; 
    if($location.path() === "/SearchProducts") { 
     $route.reload(); 
    } else { 
     $location.path("/SearchProducts"); 
    } 
} 
+0

它解決了這個問題。非常感謝您的及時回覆。 – Sunil

+0

偉大的它爲你工作。您可以將答案標記爲未來參考。 – nikhil