【问题标题】:Angular: Using $location.path() instead of hrefAngular:使用 $location.path() 而不是 href
【发布时间】:2015-04-13 20:19:11
【问题描述】:

我最近开始在ng-click 函数中使用$location.path(),而不是简单地在a 标记的href 中引用路径。 我这样做的原因:

  • 偏好使用所有逻辑,包括导航到移出视图的路径(这可能有点极端)。
  • 对于多个 html 模板引用同一个控制器的极少数情况,我可以更改一次 $location.path(),而不必记住在每个模板中更新相应的 href。

所以而不是:

<a class="button button-balanced" href="/signup">Sign up</a>

我有:

<button class="button button-balanced" ng-click="goToSignup()">Sign up</button>

在我的控制器中:

$scope.goToSignup = function() {
    $location.path('/signup');
}

我的问题是,以这种方式设置我的 Angular 应用程序有缺点吗? (注:我主要是构建 Ionic 混合移动应用)

【问题讨论】:

  • 在链接中包装一个按钮有点糟糕,如果你想让它像一个链接一样,那么就为一个链接设置一个看起来像一个按钮的样式。
  • 我猜与使用链接相比,执行脚本重定向对 seo 和可用性不利。
  • 谢谢,我编辑了我的问题,将a 标记为按钮样式。 SEO 不是问题,因为这些应用最终会成为 iOS 和 Android 原生应用。

标签: javascript html angularjs ionic-framework


【解决方案1】:
  • 偏好所有逻辑,包括导航到我视图之外的路径(这可能有点极端)。

您可以使用 same 链接按钮来处理所有导航的逻辑和路径

<a href="/signup" class="button button-balanced" ng-click="SignUpFunc()>Sign Up</a>

a标签是先执行click函数,再执行href调用。所以你可以通过链接按钮来做到这一点。

  • 对于多个 html 模板引用同一个控制器的极少数情况,我可以更改一次$location.path(),而不必记住在每个模板中更新相应的 href。

如果你使用菜单选项,你可以使用链接按钮 但是如果您将一个控制器导航到另一个控制器,那么您应该使用 $location.path('/signup');

【讨论】:

    【解决方案2】:

    我在我的项目中也使用了类似的逻辑。它对我来说很好。

    <button class="button" ng-click="go('view')">Next Page</button>
    
        $scope.go = function ( path ) {
            $location.path( path );
        };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 2015-11-19
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多