2014-11-04 50 views
-1

我有一個動態填充菜單:NG-點擊不帶菜單的工作動態AngularJS

<div ng-controller="menuDinamicoController as vm"> 
    <div ng-show="isAutenticado"> 
    <img src="{{vm.fotoUser}}" id="imagemUsuario" width="50px" /> 
    <label id="nomeUsuario" ng-model="nomeUser">{{vm.nomeUser}}</label> 
    <div id="menu"> 
     <ul> 
     <li ng-repeat="x in menu"> 
      <a href="{{x.Link}}" ng-click="vm.{{x.Id}}()">{{x.Nome}}</a> 
     </li> 
     </ul> 
    </div> 
</div> 

被正確的返回鏈接的結構:

<a href="#" ng-click="vm.sair()" class="ng-binding">Sair</a> 

的控制器具有以下功能:

vm.sair = function() { 
    $cookieStore.remove("Usuario"); 
    $cookieStore.remove("Token"); 
    $location.path("/"); 
}; 

但是,ng-click沒有調用該函數。並獲取以下錯誤:語法錯誤:令牌'x.Id'位於以[{4}]開頭的表達式[{3}]的列{2}處。

回答

2

您不應該在ng-click屬性內真的需要插入{{ }}

如果x.Id是動態創建的函數,你應該使用[]語法來代替:

ng-click="vm[x.Id]()" 

爲了幫助進一步,請提供一個例子(與片段,jsbin,或plunker)。

0

將變量作爲對象鍵傳遞給javascript時,需要使用[]對象表示法。此外,由於你逝去的veriable,不要使用表達式周圍的變量

嘗試:

<a href="{{x.Link}}" ng-click="vm[x.Id]()">{{x.Nome}}</a> 
0

要求本身是如此奇怪.. !!!!! YOu永遠不會有這種類型的ng-clicks函數''!!!即使你是,你將不得不爲數據中的100個對象創建100個函數?