如何动态创建ui-sref参数?

时间:2014-09-25 09:35:10

标签: angularjs angular-ui-router

我的页面包含“下一个”链接,该链接可能指向某个页面或可能指向文章:

<a ui-sref="page({slug: nextPage.slug}">Next</a>

<a ui-sref="article({slug: nextArticle.slug}">Next</a>

我可以通过把它变成一个变量来概括slug但是我发现很难概括被调用的函数并将它从article改为page

<a ui-sref="__method__({slug: linkSlug}">Next</a>

如何传入应该调用的方法?

...或者,如果我知道它的被叫是什么,我可以将它作为一个数组方法传递(因为`window'alert'就是这样做的)。被召唤的对象是什么?如果我知道我可以使用:

<a ui-sref="callee[methodName]({slug: linkSlug})">Next</a>

NB 我尝试过使用this[methodName]({slug: linkSlug})但它不起作用并产生错误:Error: Could not resolve 'this['page']' from state 'page'

1 个答案:

答案 0 :(得分:0)

所以答案结果是你可以将ui-sref参数作为字符串传递。

## in your controller
$scope.srefMethodAndArgs = 'page({slug: nextPage.slug})'

## in your view
<a ui-sref="{{ srefMethodAndArgs }}" ng-if="srefMethodAndArgs">Next</a>

然而,有几件事要关注这个

  1. 您需要将此字符串放在角度评估括号内:{{ }}
  2. 如果方法和参数无效,
  3. ui-sref将抛出错误。因此,如果将它们动态加载到页面中,则添加ng-if语句可确保它们在不存在时不会导致问题。