2015-03-04 12 views
6

Ich möchte einen Wert direkt aus einem Attribut-Richtlinie erhalten:Angular Attribut Direktive Wert

<form cronos-dataset="People as p"> 
    Form Content 
</form> 

In meinem JS Ich habe versucht:

app.directive('cronosDataset',[function() { 
    return { 
    restrict: 'A', 
    controller: 'CronosGenericDatasetController', 
    scope: { 
     "cronos-dataset" : '@' 
    } 
    }; 
}]) 

.controller("CronosGenericDatasetController",['$scope', function($scope) { 
    alert($scope["cronos-dataset"]); 
}]); 

Ich möchte "People as p" String aufmerksam zu machen, aber ich undefined bekommen. Ist das der richtige Weg oder sollte ich einen anderen Weg gehen?

+1

Sie müssen sehen, verwenden '$ timeout (function() {alert ($ scope [ "Cronos-Daten-Set"]);})' innen Controller –

+0

Können Sie Kiste eine plnkr/Geige? Ihr Code sollte gut funktionieren. http://plnkr.co/edit/2gdUSFoWXUTJAONqGLqn?p=preview –

Antwort

7

Sie sollen Camelcase im Rahmen Erklärung

app.directive('cronosDataset',[function() { 
    return { 
    restrict: 'A', 
    controller: 'CronosGenericDatasetController', 
    scope: { 
     cronosDataset : '@' 
    } 
    }; 
}]) 

Hier haben ist eine Demo verschiedene Varianten http://plnkr.co/edit/G6BiGgs4pzNqLW2sSMt7?p=preview

+0

Gute Eins. Vielen Dank. –

+0

Wow! Das hat den Trick gemacht! Vielen Dank! – nanndoj

+0

Kein Problem! – HarryH

4

eine Link-Funktion Stellen statt:

app.directive('cronosDataset',[function() { 
    return { 
    scope: {}, 
    restrict: 'A', 
    link: function (scope, elem, attrs) { 
     alert(attrs.cronosDataset); 
    } 
+0

er nicht wollte innen Controller nicht in Link-Funktion nennen? –

+0

Das warnt! Danke, aber ich muss es in einem Controller nennen! – nanndoj

Verwandte Themen