2014-09-25 37 views
0

我的页面“下一个”链接可以指向一个页面,也可以指向一个文章:如何动态创建ui-sref参数?

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

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

我可以把它变成一个变量概括蛞蝓但我发现很难笼统地说被呼叫的功能,并从articlepage改变它:

<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'

回答

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. ui-sref将抛出一个错误,如果该方法和args无效。因此,如果将它们动态加载到页面中,则添加ng-if语句可确保它们在不存在时不会导致问题。