如何突出显示当前菜单项?

21 浏览
0 Comments

如何突出显示当前菜单项?

AngularJS可以以任何方式帮助在当前页面的链接上设置active类吗?\n我想象中有一种神奇的方法可以实现,但我找不到。\n我的菜单如下:\n

 

\n并且我在我的路由中为每个控制器都有一个TasksControllerActionsController。\n但我无法找到一种将a链接与控制器绑定的方法。\n有什么提示吗?

0
0 Comments

如何突出显示当前菜单项?

原因:

- 需要根据当前页面的路径来确定哪个菜单项应该被突出显示。

解决方法:

1. 在HTML中使用ng-class指令来给当前菜单项添加一个active类。

2. 在AngularJS的控制器中定义一个isActive函数,该函数接受一个参数viewLocation,代表菜单项的路径。

3. 在isActive函数内部,使用$location.path()获取当前页面的路径,并将其与viewLocation进行比较。

4. 如果两者相等,则返回true,表示该菜单项应该被突出显示。

5. 在HTML中使用isActive函数来给对应的菜单项添加active类。

以下是一个示例代码:


在AngularJS的控制器中:

$scope.isActive = function (viewLocation) {
     return viewLocation === $location.path();
};

如果需要进一步了解类似的解决方案,可以参考这个Stack Overflow的帖子

另外,也可以简化isActive函数,直接返回比较结果:

$scope.isActive = function (viewLocation) {
     return viewLocation === $location.path();
};

通过以上方法,我们可以根据当前页面的路径来突出显示对应的菜单项。

0
0 Comments

如何突出显示当前菜单项?

问题的出现原因:

- 作者建议使用一个指令来处理当前菜单项的高亮显示。

- 作者提到该方法还不完美,需要注意 hashbangs 的问题。

- 作者提供了一个 JavaScript 代码片段,用于实现指令。

- 作者提供了一个 HTML 代码片段,用于展示如何在 HTML 中使用该指令。

- 作者提供了一个 CSS 代码片段,用于定义当前菜单项的样式。

- 作者给出了一些其他的建议和改进方法。

解决方法:

- 在 JavaScript 中,使用 AngularJS 的指令来实现当前菜单项的高亮显示。

- 在 HTML 中,使用指令来标记当前菜单项,并设置对应的样式。

- 在 CSS 中,定义当前菜单项的样式,例如设置为红色。

- 可以根据具体需求,对代码进行一些改进和优化,例如处理特殊情况下的菜单项高亮显示,处理请求参数等。

以下是完整的代码示例:

angular.module('link', []).
  directive('activeLink', ['$location', function (location) {
    return {
      restrict: 'A',
      link: function(scope, element, attrs, controller) {
        var clazz = attrs.activeLink;
        var path = attrs.href;
        path = path.substring(1); //hack because path does not return including hashbang
        scope.location = location;
        scope.$watch('location.path()', function (newPath) {
          if (path === newPath) {
            element.addClass(clazz);
          } else {
            element.removeClass(clazz);
          }
        });
      }
    };
  }]);


.active { color: red; }

以上是如何突出显示当前菜单项的解决方法。根据具体需求,可以对代码进行一些改进和优化,以适应不同的场景。

0
0 Comments

如何突出显示当前菜单项?

问题的出现原因:

- 使用ng-class指令在视图中设置了类名,但是这种方式将逻辑与标记混合在一起。

- 在控制器中使用了一个函数来判断当前路径是否与给定路径匹配,但这种方式会导致路径的重复和复制粘贴错误。

解决方法:

- 使用指令的方式来实现,这种方式更可重用并保持标记的清晰。

- 在视图中使用ng-class指令,将类名设置为一个对象,根据isActive()函数的返回值来决定是否添加active类。

以下是解决方法的代码示例:

在视图中:

Tasks

在控制器中:

$scope.isActive = function (path) {
  return ($location.path() === path);
};

这样,如果当前路径与给定路径匹配,就会添加active类到任务链接上。

注意:如果路径为"/",需要特殊处理,以避免重复添加active类。

$scope.isActive = function (path) {
  if ($location.path() === path) {
    if (path === "/" && $location.path() === "/") {
      return "active";
    } else if (path === "/") {
      return "";
    }
    return "active";
  } else {
    return "";
  }
};

通过使用指令的方式,我们可以更好地解耦控制器和标记/样式,并且能够更好地重用代码。

0