我对 Angularjs 完全陌生,并且已经很久没有编写任何代码了。我开始使用 Angularjs 再次设置我的网站。我有一个主页和一个关于页面,用户通过 ngRoute 在 ng-click(或点击空格)上获得。一旦进入关于页面,用户可以通过单击页面上的某处等来返回。
应用程序.js
var app = angular.module("MyApp", ["ngRoute"]);
app.config(function($locationProvider, $routeProvider) {
$routeProvider
.when("/teaser", {
controller:"teaserCtrl",
templateUrl:'teaser.html'
})
.when("/about", {
controller:"aboutCtrl",
templateUrl: "about.html"
})
.otherwise({
redirectTo:"/teaser"
})
});
app.controller("mainCtrl", function($scope, $http, $location) {
$scope.v = {
inverted: false,
display: true,
offwhite: true,
}
$scope.$on("space", function() {
if ($scope.v.teaser) {
$location.path("/about")
$scope.v.teaser = false
} else {
$location.path("/teaser")
$scope.v.teaser = true
}
$scope.$apply()
})
$scope.goHome = function(){
$scope.$broadcast("goHome")
}
});
app.directive("ngMobileClick", [function () {
return function (scope, clickElement, attrs) {
clickElement.bind("touchstart click", function (e) {
e.preventDefault();
e.stopPropagation();
scope.$apply(attrs["ngMobileClick"]);
});
}
}])
HTML
<body ng-controller="mainCtrl as main" ng-mobile-click="goHome()" ng-class="{inverted: v.inverted, bg: v.offwhite}" space>
<div class="content" ng-view ng-hide="v.display"></div>
//My body code
<script ng-init="sw = 'some website'; id="about.html" type="text/ng-template">
<div class="about">
<p class="text" ng-click="next(); $event.stopPropagation()">
<p>some text</p>
<br>
<a ng-href="{{mail}}" ng-click="$event.stopPropagation()">some address</a>
</p>
</div>
</script>
</body>
about 页面的代码被写入脚本,并且具有超链接 (ng-href)。现在我的问题:如您所见,我将主体部分的 ng-click 更改为 ng-mobile-click。如果我还在脚本中为超链接更改它,则会发生一些我无法真正弄清楚的奇怪事情(链接更改为悬停颜色,但仍然没有重定向到 ng-href。
对于桌面版,点击触发ngRoute,但我也可以点击链接。对于移动版本,这不再可能。有什么想法可以解决这个问题吗?我知道,不可能悬停,但不知何故,我还需要在移动设备上检测超链接,而无需重定向到主页。
正如我所说:这是我第一次尝试使用 Angularjs,我有一段时间没有编写任何代码,请尽可能清楚!
还有另一个我没有放在这里的 Teaser/about 控制器,以及 keyup 的指令。
有什么想法或建议吗?非常感谢您!