gpt4 book ai didi

jquery - AngularJS Controller 问题 - 单击功能在页面更改时停止工作

转载 作者:行者123 更新时间:2023-12-01 05:46:47 25 4
gpt4 key购买 nike

希望有人可以帮助 AngularJS 菜鸟!

我已经建立了一个基本站点,其中包含用于更改页面的路由。所有这些页面都有一个持久菜单,可以与 DOM 交互以打开/关闭类。我遇到的问题是,在初始页面加载时,点击功能在“主页”页面上工作,但是当我导航到“博客”时,该功能停止工作:

app.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when("/", {templateUrl: "partials/home.html", controller: "PageCtrl"})
.when("/blog", {templateUrl: "partials/blog.html", controller: "PageCtrl"})
}]);

app.controller('PageCtrl', function (/* $scope, $location, $http */) {
$('#works-navigation .navigation-label').click(function () {
$('body').toggleClass('show-works-navigation');
});
});

有什么想法吗?!

最佳答案

该 jQuery 监听器附加到单个元素,该元素在 Angular 导航时消失或刷新。要么使用 .on()适用于动态添加元素的监听器,或者简单地删除 jQuery 并以 Angular 方式执行。

使用委托(delegate)处理程序的 jQuery 方式:

$("#works-navigation ").on("click", ".navigation-label", function() {
$('body').toggleClass('show-works-navigation');
});
<小时/>

更加有 Angular 的方式

使用 $rootScope 变量(示例中的 sWN)来控制主体类可以轻松完成此操作。因此,首先将 ng-class 添加到正文中:

<body ng-class="{'show-works-navigation': sWN}">

然后在你的 .navigation-label 元素上添加 ng-click:

<div class="navigation-label" ng-click="$root.sWN = !$root.sWN"></div>

这将翻转 rootScope 变量 sWN 的值,我们用它来触发主体类。

您也可以在没有 rootScope 的情况下执行此操作,但由于您在 body 元素上触发类,所以我认为这是最安全的方法。

关于jquery - AngularJS Controller 问题 - 单击功能在页面更改时停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26050072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com