![](/img/trans.png)
[英]How can I call an anonymous function (stored in string) with an argument in JavaScript?
[英]How to call an anonymous function stored as a string
我試圖在AngularJs中動態設置頁面標題。 我正在使用angular-ui路由器和stateHelper。
所以我的主模板中有這個:
<title ng-bind="pageTitle"></title>
這在我的ui路由器中:
{
name: 'show',
url: '/:id',
title: function($stateParams){
return 'Showing '+$stateParams.id;
}
}
然后這樣:
$rootScope.$on('$stateChangeStart', function(event, toState, toParams)
{
//set page title
if(angular.isFunction(toState.title))
{
var callBack = toState.title; //this is the anonymous function
//I expect the anonymous function to return the title
$rootScope.pageTitle = callBack;
}else{
$rootScope.pageTitle = toState.title;
}
}
挑戰: var callBack = toState.title;
返回這樣的字符串:“ function($ stateParams){return'Showing'+ $ stateParams.id;}”
如何執行此功能,並同時遵守隨其傳遞的參數dependency injected
參數(未知數量的DI)
注意:我非常害怕eval
並且不想使用它:(
可以使用$injector.invoke
調用具有相關依賴性的函數:
$rootScope.$on('$stateChangeStart', function(event, toState, toParams)
{
if(angular.isFunction(toState.title) || angular.isArray(toState.title))
{
$rootScope.pageTitle = $injector.invoke(toState.title);
}else{
$rootScope.pageTitle = toState.title;
}
}
您可以先將$ stateParams注入控制器(其中的$ rootScope。$ on語句所在的位置),然后調用
toState.title($ stateParams);
順便說一句,您可以考慮使用更好的解決方案來處理“動態標題”。 檢查此項目的使用方式: https : //github.com/ngbp/ngbp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.