我有一个动态填充的菜单:
<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}]开始。
答案 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个函数???