2014-09-01 39 views
0

我收到以下错误AngularJS当我传递一个ID

Error: [$parse:syntax] Syntax Error: Token 'edition.multiverse_id' is unexpected, expecting [:] at column 17 of the expression [AddCardToList({{edition.multiverse_id}})] starting at [edition.multiverse_id}})]. 

http://errors.angularjs.org/1.2.22/ $解析/语法?P0 = edition.multiverse_id & P1 =为%20unexpected%2C%20expecting上点击不工作%20%5B%3A%5D & P2 = 17 & P3 = AddCardToList(%7B%7Bedition.multiverse_id%7D%7D)& P4 = edition.multiverse_id%7D%7D)

与下面的HTML

<button type="button" ng-if="$index == 0" class="btn btn-default btn-xs" ng-href='#' ng-click="AddCardToList({{edition.multiverse_id}})">{{edition.multiverse_id}}</button> 

的按钮都很好地包裹在一个中继器就是这样具有以下

<li ng-repeat="edition in card.editions" > 

div元素里面我不知道我在做什么错在这里?

我试图让我的按钮是点击事件下面的角码是以下

$scope.AddCardToList = function (multiverse_id) { 
     $http.get("https://api.deckbrew.com/mtg/cards?multiverseid=" + multiverse_id).then(onCardListAddComplete, onError); 
    }; 

任何帮助将非常感激。彻底的解释为什么这不起作用会帮助我成为一个更好的AngularJS程序员。非常感谢提前。

+2

'ng-click =“AddCardToList(edition.multiverse_id)”'。既然你调用了一个没有大括号的函数('AddCardToList'),你为什么要用它们作为变量('edition.multiverse_id')? – Blackhole 2014-09-01 21:31:39

+0

不要在'{{}}'中包装函数参数。摘要期望实际参数或者作为字符串值或作用域变量 – charlietfl 2014-09-01 21:32:23

+0

我只能传递对象的权利?不妨传入对象,好点! 谢谢!做出答案,我会投票! 非常感谢! – 2014-09-01 21:35:10

回答

2

不要在任何地方使用括号内ng-click

<button type="button" ng-if="$index == 0" class="btn btn-default btn-xs" ng-href='#' ng-click="AddCardToList(edition.multiverse_id)">{{edition.multiverse_id}}</button> 
1

大括号是用来插入范围变量或表达式成预计文本的区域。 ng-click指令在当前作用域上将其内容评估为angular expression,与一般的javascript表达式类似,请参阅链接以获取信息。

所以,如果你有一些HTML所期望得到一个字符串,如class属性可以使用双括号,但如果您使用的是指令,例如ng-class一个期望的表达你不应该:

<span class="{{className}}">This will set the css class to `$scope.className`</span> 
<span ng-class="{ className: true }">This will do the same thing</span>