2015-04-07 4 views
6

Ich kämpfe immer noch mit einfachen Dingen in Angular. Ich habe jQuery und Backbonejs Hintergrund, also bitte schrei mich nicht an. Ich versuche hart UnterschiedeAngularjs | Wie bekomme ich einen Attributwert von Element in dem Controller definiert ist

Ich habe HTML, in denen von Schienen zu verstehen, ID-Projekt als Daten Projekt-ID angegeben:

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

Gibt es eine Chance zu bekommen Zugriff auf dieses Attribut? Ich brauche es für meine API-Aufrufe ...

+0

Sie können jqlite von angularjs verwenden, das eine Alternative für jQuery ist Im Winkelbereich, aber Sie möchten dies vielleicht auf eine andere Art und Weise tun, um Daten aus HTML zu lesen, ist keine eckige Art, wie Sie das Modell machen wollen, außer wenn Sie mit Direktiven zu tun haben. –

Antwort

15

auf ein Element zugreifen von einem Controller-Attribut, injizieren $attrs in Ihre Controller-Funktion:

HTML

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

Script

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

In Ihrem Beispiel, wenn Sie Daten-Projekt-ID erhalten möchten:

$attrs.projectId 

Oder wenn Sie id erhalten:

$attrs.id 

Demo:

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>

+0

für mich $ attrs sind undefiniert, hast du irgendeine funktionierende Geige zu zeigen? – Kania

+0

Sie gehen davon aus, dass sie mit einer benutzerdefinierten Anweisung arbeiten. Dies ist wahrscheinlich der Grund, warum $ attrs nicht definiert ist. da sie sich vielleicht nur in einem Controller einer Ansicht befinden anstatt in einem Controller der Direktive. –

+0

Sorry, ich weiß nicht, was du meinst ... – pixelbits

0

In Angular World sollten Sie Anweisungen verwenden, um mit DOM-Elementen zu manipulieren. Hier eine schöne Erklärung, wie man den Attributwert von einer benutzerdefinierten Anweisung (How to get evaluated attributes inside a custom directive) bezieht.

Aber wenn Sie noch bekommen es ist Wert von der Steuerung Sie in der Lage sind jQuery verwenden auch $('#project_configuration').data('project-id')

+3

Es ist keine gute Übung, jquery in Ihrem Controller zu verwenden. Richtlinie ist der beste Ort, um jQuery zu verwenden. – ATHER

Verwandte Themen