2014-09-25 58 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語句可確保它們在不存在時不會導致問題。