2016-09-22 15 views
1

下面的線路發生故障時,控制檯顯示「指數是未定義」:角{{}}表達不解析內部被單擊圖像時納克點擊

<img class="full-image" ng-click="addFavorite({{dish.id}})" ng-src="{{baseURL+dish.image}}" title="{{dish.name}}" > 

然而,任何其它表達式的解決插值就好了。我甚至加入這個來證明我可以告訴菜ID:

<h2>{{dish.name}} {{dish.id}} 

我也得到菜餚名稱和右邊的菜ID打印出來,在瀏覽器上。

如果我交換表達式的硬編碼值,如2,功能加入收藏()運行在點擊罰款:

<img class="full-image" ng-click="addFavorite(2)" ng-src="{{baseURL+dish.image}}" title="{{dish.name}}" > 

可能是什麼,其防止加入收藏()funcion從解決錯誤的{ {dish.id}}表達式?

+1

請參閱[這個問題](http://stackoverflow.com/questions/17039926/adding-parameter-to-ng-click-function-inside-ng-repeat-doesnt-seem-to-work)。 – Skylar

+0

我會習慣使用[ngBind](https://docs.angularjs.org/api/ng/directive/ngBind)。這樣你就不需要打擾'{{}}'。 ngBind加載速度也更快。 – Mickers

+0

@Mickers:好的,我會記住它,但它不適合ng-click。 –

回答

0

當你使用像ng-click你不需要使用{{}}

更新:

這對你有幫助 https://docs.angularjs.org/api/ng/directive/ngClick

+1

哇...這工作。刪除了{{}}部分。這是令人難以置信的令人沮喪的事情:代碼片段來自另一個控制器/模板,使用花括號可以很好地工作。最糟糕的是,這是來自我正在學習的AngularJS課程。想知道它爲什麼在一方面工作,而不是另一方面。唯一的區別是,在工作場景中提到的菜餚對象來自ng-repeat =「菜餚中的菜餚」形式的菜餚。謝謝Minkyu,讓我知道你是否對此有更多的瞭解。 –

+0

我真的不知道,因爲我是你的新angula.js,但我聽說這是如編譯機制,在模板中,我們應該使用像jstl。 ng-somethings是angular.js演示文稿的一部分,所以我們不使用它,但效果很好。 –

0

嘗試過離開車把。只需使用ng-click="addFavorite(dish.id)"

+0

是的,正好是Arun ....請如果你知道爲什麼它可能正常工作正如我對Minkyu的評論中所述的某些其他情況,請讓我知道。 –

1

ng-click原因沒有句柄的原因是因爲它是一個Angular指令,它將解析表達式,也就是不需要句柄。 NgSource接受一個字符串。要強制一個變量,你必須使用把手來防止它被硬編碼。與Title屬性相同。這不是一個指令,它期望傳遞一個字符串。當頁面加載角度將解析句柄並從$ scope插入正確的文本。希望能幫助解決這個問題。

+0

現在清楚了車把的工作方式。我無法理解的是,爲什麼它目前在其他代碼片段中工作,我們正在角度課程中教授它。我的意思是在ng-click指令內添加{{}}。我想我將不得不提供一個MCVE來進一步說明。 –