2017-01-06 3 views
0

Я использую ng-repeat для создания нескольких div с модалами, которые я открываю getElementById. Когда я жестко кодирую идентификатор (например, «modalId»), он работает, но не, если я пытаюсь использовать переменную. Как мне заставить работать?Угловая: Как использовать переменную в HTML getElementById

<div class="col-sm-4 col-md-4" ng-repeat="p in proj"> 
     <img class="myImg" ng-src="{{p.image}}" onclick="document.getElementById('{{p.id}}').style.display='block';"> 
     <div id="{{p.id}}" class="w3-modal" onclick="this.style.display='none';"> 
      <div class="w3-modal-content w3-animate-zoom"> 
      <img ng-src="{{p.image}}"> 
      </div> 
     </div> 
</div> 

p.id Я хочу использовать (строка 2) - это int.

+0

Когда вы смотрите источник '/ проверка была ли она похожа на вычисленную? –

+0

Да отображается интерполяционная ошибка, упомянутая другими ответами. Но когда я использую ng-click, отображается следующая ошибка: Ошибка: v0 не определено. Я не уверен, что такое v0? – sandboxj

+0

Это первые две строки ошибок: Ошибка: v0 не определено anonymous/fn @ https: //ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js строка 231> Функция: 2: 738 – sandboxj

ответ

1

Из документов: Интерполяции для атрибутов событий HTML DOM запрещены. Вместо этого используйте ng-версии (например, ng-click вместо onclick).

См. Здесь: https://docs.angularjs.org/error/$compile/nodomevents.

Пример:

$scope.imgClicked = function(id){ 
    document.getElementById(id).style.display='block'; 
} 

HTML:

<img class="myImg" ng-src="{{p.image}}" ng-click="imgClicked(p.id)"> 
+0

Да, указанная ошибка интерполяции отображается. Но когда я использую ng-click, отображается следующая ошибка: Ошибка: v0 не определено. Я не уверен, что такое v0? – sandboxj

+0

Это первые две строки ошибок: Ошибка: v0 не определено anonymous/[email protected]/ajax/libs/angularjs/1.5.6/a ngular.min.js строка 231> Функция: 2: 738 – sandboxj

+0

Я добавил пример. –

0

проверить это

https://docs.angularjs.org/error/ $ компилировать/nodomevents

вы должны быть получив ниже предупреждение в консоли.

Интерполяции для атрибутов событий HTML DOM запрещены.

Эта ошибка возникает, когда один пытается создать привязку для обработчика событий атрибутов, как OnClick, OnLoad, onsubmit и т.д.

Там нет никакого практического значения в связывании этих атрибутов и делает это только обнажает приложение к безопасности таких как XSS. По этим причинам привязка к атрибутам обработчика событий (все атрибуты, начинающиеся с атрибута on и formaction) не поддерживается.

+0

Да, указанная ошибка интерполяции отображается. Но когда я использую ng-click, отображается следующая ошибка: Ошибка: v0 не определено. Я не уверен, что такое v0? – sandboxj

+0

Это первые две строки ошибок: Ошибка: v0 не определено anonymous/[email protected]/ajax/libs/angularjs/1.5.6/a ngular.min.js строка 231> Функция: 2: 738 – sandboxj

+0

вы могли бы создать скрипку/плункер вашего кода, v0 undefined не должно быть связано с общим кодом – Deep

Смежные вопросы