【问题标题】:ngClick on anchor tags causing problems in AngularngClick 锚标记导致 Angular 出现问题
【发布时间】:2013-10-13 19:57:23
【问题描述】:

我在主导航中的锚点标签上有 ngClick 指令,以使菜单在单击后从画布上“消失”:

<a href="/#/profile" ng-click="showNav = false">

一切正常。但是,我最近注意到当我通过这些锚标记更改视图时发生了一个错误(在控制台中):

无限的$digest

组件 $rootScope 中的循环错误

这就是我处理路线的方式:

$routeProvider.when('/register', {
   templateUrl: 'assets/templates/register.html',
   controller: 'RegistrationController'
});

这是因为我在将“showNav”设置为 false 的同时更改了视图吗?这甚至是正确的方法吗?

【问题讨论】:

    标签: angularjs angularjs-directive angularjs-routing angularjs-ng-click


    【解决方案1】:

    如果你只想让菜单消失 - 你保持 href 为空。如果您需要移动到新控制器,请在配置文件控制器中设置 showNav = false。所以我的意思是你需要一个 - ng-click 或 href,而不是两者。

    【讨论】:

    • 谢谢!我删除了 href 并更改了我的 ngClick 以调用一个更改位置并将 showNaw 设置为 false 的函数
    • @tobiasandersen,你最好返回 href 并将 showNav = false 放在此 href 链接到的控制器中。
    • 我明白为什么这样做更可取。但是它不适用于我现在拥有的结构。由于 showNav 的使用范围更广。
    • 没有看到你的代码我只能猜测,但尝试注入 $rootScope 然后在你的配置文件控制器中像这样$rootScope.showNav = false 切换它。
    【解决方案2】:

    将锚标记的显示和隐藏与用户点击的 url 联系起来,即:

    <a ng-if="location.path() != '/profile' href="/#/profile"></a>
    

    在您的控制器中:

    function mycontroller($scope,$location) {
    $scope.location = $location;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-27
      • 2018-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多