【问题标题】:Angular JS RouteProvider does not callAngular JS RouteProvider 不调用
【发布时间】:2015-09-05 21:12:24
【问题描述】:

我正在开发像 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 来搜索数据库并构建我的响应 JSON。问题是当我单击主页菜单上的第一项时,我得到搜索结果,我可以看到我的 URL 更改为“.......Index2.html#/SearchProducts”

现在在这个页面上,当我尝试选择另一个菜单项时,Routeprovider 不会再次调用“ProductSearchCtrl”,并且不会对新选择的项目执行 Ajax 调用。有人可以帮忙吗?

【问题讨论】:

  • 首先,ng-click和href一起使用没有意义
  • 谢谢尼基尔。这确实有道理。我已经删除了href,但我仍然遇到同样的问题。
  • 我添加了一个解决方案。请看看它是否符合您的需要。

标签: angularjs


【解决方案1】:

我认为您正在尝试重新加载路线。您可以将代码更新为如下所示的内容,以便重新加载路线。

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

【讨论】:

  • 它解决了这个问题。非常感谢您的及时回复。
猜你喜欢
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 2013-09-07
  • 2013-07-03
  • 2016-04-09
  • 2013-10-30
  • 2014-07-07
  • 2015-07-19
相关资源
最近更新 更多