1

我正在创建一个应用程序,其中站点菜单将从 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,但它在加载时执行功能。

我该怎么做呢?

4

1 回答 1

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比角度转换它在javascript中像$scope.a = $scope.b + $scope.c

于 2013-10-05T21:12:36.937 回答