2014-11-04 55 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个函数?