Можем ли мы динамически добавить «id» и «data-id» в один и тот же элемент?

0

Мне нужно знать, можем ли мы использовать "id" и "data-id" в одном элементе?

вот мой код: этот работает отлично!

<button class="btn btn-round btn-default" data-id="1" id="1" ng-click='getMyId($event)'>Requete1</button>
<button class="btn btn-round btn-default" data-id="2" id="2" ng-click='getMyId($event)'>Requete2</button>
<button class="btn btn-round btn-default" data-id="3" id="3" ng-click='getMyId($event)'>Requete3</button>

но когда я изменил его вот так:

<tr ng-repeat="pers in queries">
    <td>{{pers.id}}</td>
    <td>{{pers.name}}</td>
    <td>{{pers.description}}</td>
    <h1>XXXX</h1>
    <td>
        <div >
            <button class="btn btn-round btn-default" data-id={{pers.id}} id={{pers.id}}
                    ng-click='getMyId($event)'>{{pers.name}}
            </button>
        </div>
    </td>
</tr>

это не работает! Требуется только идентификатор или идентификатор данных. Или мне нужно использовать оба из них, потому что мне нужно получить идентификатор parentNode, и это будет с "id", и мне нужно получить информацию о кнопке, и это будет сделано с помощью " данных идентификатор"

вот мой код контроллера:

$scope.rep={};
var ids=[];

$scope.rep={};
var ids=[];

$scope.getMyId = function(e){
    //console.log(e.target.parentNode.id);
    var id_q = $(e.target).data('id');
    var id = document.getElementById(id_q).parentNode.id;
    console.log("id_q= "+id_q);
    console.log("id= "+id);
    ids=[id_q,id];
    queryProvider.getById(ids,function(rep){
       $scope.rep=rep;
    });
}

Может кто-нибудь мне помочь?

  • 0
    Почему вы не можете просто использовать другой атрибут, такой как data-parentid ?
  • 0
    Поскольку вы присваиваете одно и то же значение {{pers.id}} обоим, нет смысла использовать их оба, придерживайтесь id
Показать ещё 2 комментария
Теги:

1 ответ

1
Лучший ответ

AngularJS обрабатывает id атрибутов id и data-id как если бы они были одинаковыми.

Из Документов:

Нормализация 1

Угловой нормализует тег элемента и имя атрибута, чтобы определить, какие элементы совпадают.

Процесс нормализации выглядит следующим образом:

x- и data- с передней стороны элемента/атрибутов. Преобразуйте имя : -, или _ -delimited в camelCase.

Выберите имена атрибутов, которые не нормализуются к одному и тому же.


Кроме того, в функцию ng-click можно добавить несколько параметров.

<button data-pers-id={{pers.id}} ng-click='getMyId(pers.id, $event)'>
    {{pers.name}}
</button>

Функция getMyId может получать идентификационную информацию непосредственно из данных модели. Не нужно извлекать его из объекта $event.

  • 0
    Спасибо, я полчаса стучал головой о стол и думал, не было ли в моем коде орфографических ошибок.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню