ng-href 中的 Angularjs 函数

Posted

技术标签:

【中文标题】ng-href 中的 Angularjs 函数【英文标题】:Angularjs function in ng-href 【发布时间】:2015-07-05 13:51:56 【问题描述】:

我想在 ng-href 中调用一个函数并从该函数返回链接。

当我单击该函数时,它会将页面发送到 url 中的该函数。喜欢:

localhost/pageLink()

<a ng-href="pagelink()" >Link</a>

如何运行函数并返回正确的链接?

【问题讨论】:

ng-href=" pagelink() " 【参考方案1】:

插值可以解决问题:

<a ng-href="pagelink()">Link</a>

编辑:

对于任何抱怨这将在启动时执行代码的人:这正是它必须做的!它监视pagelink 方法的更改并更新href 属性。

原来的问题是:

如何运行函数并返回正确的链接?

pagelink() 不应该处理路由,而是返回一个字符串 指向目标路由。请参阅ngHref documentation。

如果你想自己处理路由,你应该使用ngClick,而不是ngHref

【讨论】:

在调用返回 url 的函数时出现此错误:“错误:$rootScope:infdig Infinite $digest Loop”。这是为什么呢? 所有这一切都会在页面加载时在您的控制器中调用pagelink()。在没有插值的情况下使用 ng-click 应该可以解决问题。 @ScottKoland 使用ng-click 的问题是你失去了&lt;a&gt; 的能力,比如target="_blank"。在新标签页中打开网页是 javascript 的一大难题。 我发现我需要添加属性target="_self" 才能在您单击链接时使用它(而不仅仅是更新 URL) @Elio 插值在这里是完全合法的。请参阅 ngHref 属性的文档:docs.angularjs.org/api/ng/directive/ngHref【参考方案2】:

假设pagelink() 位于$rootScope,您将使用ng-click

<a href="" ng-click="pagelink()">Link</a>

您需要href="",以便浏览器在鼠标悬停时更改光标。

【讨论】:

无法在新标签页中打开网页

以上是关于ng-href 中的 Angularjs 函数的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS进阶(三十二)书海拾贝之特殊的ng-src和ng-href

AngularJS ng-href 和 svg xlink

ng-href 中的三元表达式

为啥 ng-href 在解析地理字符串时表现得很奇怪

我如何用ng-href超链接elements?

angularjs启动项目报ERROR in AppModule is not an NgModule解决方法