ng-click不使用菜单动态AngularJS

时间:2014-11-04 14:17:20

标签: angularjs dynamic menu angularjs-ng-click

我有一个动态填充的菜单:

<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不会调用该函数。并收到以下错误: 语法错误:令牌&#39; x.Id&#39;位于表达式[{3}]的第{2}列,从[{4}]开始。

3 个答案:

答案 0 :(得分:2)

您不应该在{{ }}属性中真正需要插值ng-click

如果x.Id是动态创建的函数,则应使用[]语法:

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

为了进一步提供帮助,请提供一个示例(使用代码段,jsbin或plunker)。

答案 1 :(得分:0)

在javascript中将变量作为对象键传递时,需要使用[]对象表示法。此外,由于您传递的是可验证的,因此不要在变量

周围使用表达式

尝试:

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

答案 2 :(得分:0)

要求本身就是如此奇怪.. !!!!!你永远不会有这种类型的功能用于ng-clicks''!即使你,也就是你必须在数据中为100个对象创建100个函数???