1

我正在开发一个移动应用程序,发现 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 点击事件。

4

1 回答 1

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 而不是将所需的变量和函数放在它所属的控制器范围内。

于 2014-07-31T19:16:16.993 回答