我正在开发像webapp这样的电子商务来学习Angular。我的主页上有一个菜单(常见且在所有页面上都可见),它提供了可用于书籍,衣服等。
在我的菜单上,我有以下列表项目:
<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来搜索数据库并构建我的Response JSON。问题是当我点击主页菜单上的第一项时,我得到搜索结果,我可以看到我的网址变为“....... Index2.html#/ SearchProducts”
现在在此页面上,当我尝试选择另一个菜单项时,Routeprovider不会再次调用“ProductSearchCtrl”,并且不会对新选择的项目执行Ajax调用。有人可以帮忙吗?
答案 0 :(得分:2)
我认为您正在尝试重新加载路线。您可以将代码更新为以下内容,以便重新加载路线。
$scope.searchProduct =function(productTBSearched){
$scope.TBFProduct=productTBSearched;
if($location.path() === "/SearchProducts") {
$route.reload();
} else {
$location.path("/SearchProducts");
}
}