用ng-click替换ng-href

时间:2013-04-11 22:01:30

标签: angularjs

我正在开发一个移动应用程序,发现angularjs 1.1.4有一个 ngTap 指令,可替代标准 ng-click 。它使应用程序更加健壮,所以我决定用ng-tap替换所有的ng-href指令。为此,我在$ rootScope中创建了一个“go()”函数。问题是它无法解析url变量。

这是我的代码。

$rootScope.go = function (url) {
    $location.path(url);
}

并在模板中:

<a class="niceButtonLikeStyled" data-ng-click="go(/somewhere/var.id/)">{{ var.id }}</a>

使用data-ng-click作为ngTap是可移植的,如果加载了新的ngMobile,则替换ng-click。 我的问题似乎是go()参数(混合静态和变量内容?

也许只是将新的ng-click绑定到所有链接的另一种方式..或者只是添加自己的指令,该指令将从ng-href获取值并使位置重定向并附加ng-tap click事件。

1 个答案:

答案 0 :(得分:3)

用于ng-click

的AngularJS表达式

当您使用ng-click时,您正在调用AngularJS表达式。

您当前的代码表达式为:

go(/somewhere/var.id/)

您需要引用该字符串:

go('/somewhere/' + var.id + '/')

其他问题

您的代码的另一个问题:函数go应该在控制器的范围内,而不是在$ rootScope中:

angular.module('MyModule').controller(
  'MyController',
  function ($scope, $location) {
    $scope.go = function (url) {
      $location.path(url);
    }
  }
);

以下是模板的外观:

<div ng-controller="MyController as mycontroller">
  <a class="niceButtonLikeStyled"
     data-ng-click="mycontroller.go('/somewhere/' + var.id + '/')">
    {{ var.id }}
  </a>
</div>

这是代码中最大的问题,您使用$ rootScope而不是将所需的变量和函数放在它所属的控制器范围内。