web-dev-qa-db-fra.com

Angularjs | obtenir une valeur d'attribut d'un élément dans lequel le contrôleur est défini

Je me bats toujours avec des choses simples dans Angular. J'ai des antécédents jQuery et Backbonejs, alors s'il vous plaît, ne criez pas sur moi. Je m'efforce de comprendre les différences

J'ai HTML dans lequel on donne à partir de Rails l'ID du projet en tant que data-project-id:

<div data-ng-controller="ProjectCtrl as ctrl" data-project-id="1" id="project_configuration">

Y a-t-il une chance d'avoir accès à cet attribut? J'en ai besoin pour mes appels d'API ...

6
Kania

Pour accéder aux attributs d'éléments d'un contrôleur, injectez $attrs dans la fonction de votre contrôleur:

HTML

<div test="hello world" ng-controller="ctrl">
</div>

Scénario

app.controller('ctrl', function($attrs) {
  alert($attrs.test); // alerts 'hello world'
});

Dans votre exemple, si vous souhaitez obtenir data-project-id:

$attrs.projectId

Ou si vous voulez avoir un identifiant:

$attrs.id

Démo:

var app = angular.module('app',[]);
app.controller('ctrl', function($attrs) {
  alert($attrs.test);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="ctrl" test="hello world">
  
</div>

15
pixelbits

Dans Angular world, vous devez utiliser des directives pour manipuler des éléments DOM. Voici une bonne explication sur la façon d’obtenir une valeur d’attribut à partir d’une directive personnalisée ( Comment obtenir des attributs évalués dans une directive personnalisée ).

Mais si vous voulez toujours obtenir sa valeur du contrôleur, vous pouvez également utiliser jQuery $('#project_configuration').data('project-id')

0
Ivan Burnaev