javascript - (angularJS) 让 ng-click 在 ng-repeat 上打开链接

标签 javascript html angularjs angularjs-directive

刚接触 Angular,很抱歉,如果这已在某处被提及,但我很难用简洁的术语准确地解释我想要什么。

目前,我有一个 ng-repeat 从 JSON 对象中提取数据并制作列表。

<li ng-click="openLink()" ng-repeat="location in locations">
  {{location.name}}
</li>

每个对象都有一个名为“link”的键,并且该键有一个 url 属性。我希望函数 openLink() 打开与每个对象关联的链接。我不知道如何在 Controller 中解决这个问题。

我知道我能做到

<li ng-click="openLink()" ng-repeat="location in locations">
  <a ng-href="{{location.link}}">{{location.name}}</a>
</li>

但我希望能够使用 ng-click 来完成此操作,以保持 index.html 更干净。那么我在这里放什么来完成同样的事情呢?

$scope.openLink = function() {

};

最佳答案

如果您要重定向到的 url 是 Angular 应用程序中的路由,则需要将 $location 服务注入(inject)到 Controller 中,然后在您的函数中设置 $location 的路径属性。

<li ng-click="openLink(location)" ng-repeat="location in locations">
  {{location.name}}
</li>


$scope.openLink = function(location){
    $location.path(location.link);
}

如果位置链接是一个完整的url,您应该将$window服务注入(inject)到您的 Controller 中,并更改openLink函数以设置$window.location.href。

$scope.openLink = function(location){
    $window.location.href = location.link;
}

关于javascript - (angularJS) 让 ng-click 在 ng-repeat 上打开链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29023950/

相关文章:

javascript - 如何获取Appcelerator Titanium中事件监听器keyboardframechanged的返回值?

javascript - 在 2 个下拉菜单列表中选择选项?

javascript - 与 webview 的 DOM 交互

javascript - angular- 从范围 var 中获取 ng-model 名称

javascript - Observable<void> 不调用订阅者

javascript - 如何让firefox报javascript错误?

html - 缓入适用于文本和背景,但缓出仅适用于文本。为什么?

html - CSS - 在背景图像上填充

javascript - 更新事件的 Angular 范围

javascript - 有没有办法让 Web 应用程序在关闭时继续运行?