2013-10-05 45 views
1

我正在創建一個應用程序,其中站點菜單將從JSON文件動態加載。每個菜單可以對應於在ng-click指令中定義的動作。這將是這個樣子Angular JS 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

不要在代碼中使用html轉義序列,請按ctrl + K,而不是將其轉換爲帶引號的代碼。 – Johan

+0

請注意,您關閉的'

  • '應該是'
  • ' – Johan

    回答

    2

    定義方法不是作爲字符串,而是作爲函數並將ng-click="{{menuItem.clickAction}}"替換爲ng-click="menuItem.clickAction()"。另一種方式來定義函數在$範圍,如:

    $scope.executeString = function(body){ 
        eval(body); 
    }; 
    

    並更換NG-點擊ng-click="executeString(menuItem.clickAction)"。無論如何,使用eval是反模式;)

    請記住,ng-click和其他指令,就像那樣,將角度表達式作爲參數。如果你的身體表達是a = b + c比角度轉換它在JavaScript像$scope.a = $scope.b + $scope.c