我正在创建一个应用程序,其中站点菜单将从JSON文件动态加载。每个菜单可以对应于将在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
但它在加载时执行函数。
我该怎么做?
答案 0 :(得分:2)
将方法定义为不作为字符串,而是定义为函数,并将ng-click="{{menuItem.clickAction}}"
替换为ng-click="menuItem.clickAction()"
。另一种在$ scope上定义函数的方法,如:
$scope.executeString = function(body){
eval(body);
};
并将您的ng-click替换为ng-click="executeString(menuItem.clickAction)"
。无论如何,使用eval是反模式;)
请记住,ng-click
和其他指令(如此)将角度表达式作为参数。如果你的表达方式是a = b + c
而不是像$scope.a = $scope.b + $scope.c