Angular JS ng-click动作函数为字符串

时间:2013-10-05 20:38:14

标签: 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 class="{{menuItem.iconClass}}"></i>{{menuItem.name}}

<span class="badge">{{menuItem.subMenus.length}}</span>
    </a>`enter code here`
<li>

现在问题是ng-click无法将clickAction识别为函数,我相信这是由于链接过程造成的。我想知道有没有办法评估字符串方法。我试过做$eval但它在加载时执行函数。

我该怎么做?

1 个答案:

答案 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

那样在javascript中进行角度转换