2014-09-01 40 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>