我正在开发一个移动应用程序,发现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事件。
答案 0 :(得分:3)
当您使用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而不是将所需的变量和函数放在它所属的控制器范围内。