有条件的ui-sref和ng-点击相同的链接

时间:2016-09-24 12:23:18

标签: javascript html angularjs angular-ui-router

我在指令中有一个链接,目前看起来像这样:

<a href="" ng-href="{{tile.type === 'article' ? '/article/' + tile.slug : ''}}" ng-click="tile.type === 'video' && openVideo({id: tile.videoId})"></a>

这里的逻辑是这样的:   - 如果tile.typearticle,则链接应创建href值,如果点击则应转到此相关网址   - 如果tile.typevideo,则链接应将href值保留为空并在单击时执行openVideo函数

问题是,对于视频链接,href值被完全删除,因此链接会丢失本机链接样式,例如鼠标光标在悬停时更改。我也希望使用ui-sref而不是ng-href,但我似乎无法在那些条件语句中使用。

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

只需使用ng-if:

<a ng-if="tile.type === 'article'" ng-href="{{'/article/' + tile.slug}}"></a>
<a ng-if="tile.type === 'video'" href="" ng-click="openVideo({id: tile.videoId})"></a>

你也可以使用ui-sref

答案 1 :(得分:0)

选项1:仅使用ng-click并通过$ state.go在ng-click函数内处理链接。

选项2:使用https://christopherthielen.github.io/ui-router-extras/#/sticky为视频制作syntetic parallell路线,或在$ stateChangeStart中截取视频路线更改(打开视频并防止状态更改)。