2015-06-19 65 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