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 ...
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>
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')