Я думаю, что вы пропускаете кавычки для идентификатора, поскольку он должен быть строковым литералом.
ng-click="close_popup('${id}')"
ОБНОВЛЕНИЕ :
Почему ng-click="close_popup('${id}')
работает, но не ng-click="close_popup(${id})"
Это немного сложно объяснить, потому что у нас есть литерал шаблона JavaScript внутри шаблона AngularJS.
Когда вы вызываете register_popup
, вы передаете ему идентификатор, который является строковым значением.Его значение (скажем, popupId
) будет вставлено в строку шаблона.Таким образом, к тому времени, когда angular получит ваш шаблон, все ${id}
будут заменены на popupId
.Angular видит: ng-click="close_popup(popupId)"
.Он будет обрабатывать popupId
как переменную, определенную в $scope
, и попытаться найти ее (вот почему вы получили неопределенное значение).
То, что вы на самом деле хотели передать Angular, это ng-click="close_popup('popupId')"
, поэтому вам понадобится дополнительнаяцитаты.
Вы можете сделать console.log(htmlelement)
, прежде чем скомпилировать его.Это поможет вам понять, какой будет строка после ее оценки.