String Angular JS ng单击操作函数作为字符串
我正在创建一个应用程序,其中站点菜单将从JSON文件动态加载。每个菜单可能对应于String Angular JS ng单击操作函数作为字符串,string,angularjs,action,String,Angularjs,Action,我正在创建一个应用程序,其中站点菜单将从JSON文件动态加载。每个菜单可能对应于ng click指令中定义的操作。这看起来像这样 <li ng-repeat="menuItem in menuContainer.menus" class="{{menuItem.cssClass}}"> <a href="{{menuItem.url}}" ng-click="{{menuItem.clickAction}}"> <i clas
ng click
指令中定义的操作。这看起来像这样
<li ng-repeat="menuItem in menuContainer.menus" class="{{menuItem.cssClass}}">
<a href="{{menuItem.url}}" ng-click="{{menuItem.clickAction}}">
<i class="{{menuItem.iconClass}}"></i>{{menuItem.name}}
<span class="badge">{{menuItem.subMenus.length}}</span>
</a>`enter code here`
<li>
`在这里输入代码`
现在的问题是,ng click
无法将clickAction
识别为一个函数,我相信这是由于链接过程造成的。我想知道是否有任何方法可以计算字符串到方法的值。我尝试执行$eval
,但它会在加载时执行该函数
如何做到这一点?将方法定义为函数而不是字符串,并将
ng click=“{{menuItem.clickAction}}”
替换为ng click=“menuItem.clickAction()”
。在$scope上定义函数的另一种方法,如:
$scope.executeString = function(body){
eval(body);
};
并将ng click替换为ng click=“executeString(menuItem.clickAction)”
。无论如何,use eval是反模式;)
请记住,
ng click
和其他类似的指令将角度表达式作为参数。如果表达式的主体是a=b+c
,请使用javascript将其转换为$scope.a=$scope.b+$scope.c
不要在代码中使用html转义序列,请按ctrl+K将其转换为带引号的代码。请注意,结束语应该是