2015-03-04 14 views
6

Chcę uzyskać wartość prosto z dyrektywą atrybut:wartość kątowa dyrektywa atrybut

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

W moich JS Próbowałem:

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

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

Chcę ostrzec "People as p" ciąg, ale pojawia undefined. Czy jest to właściwa ścieżka, czy też powinienem zastosować inne podejście?

+1

trzeba użyj '$ timeout (function() {alert ($ scope [" cronos-dataset "]);})' wewnątrz kontrolera –

+0

Czy potrafisz stworzyć skrzynkę/skrzypce? Twój kod powinien działać poprawnie. http://plnkr.co/edit/2gdUSFoWXUTJAONqGLqn?p=preview –

Odpowiedz

7

Powinieneś mieć CamelCase w deklaracji zakres

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

Oto demo, aby zobaczyć różne odmiany http://plnkr.co/edit/G6BiGgs4pzNqLW2sSMt7?p=preview

+0

Dobra. Dzięki. –

+0

Wow! To wystarczy! Dziękuję Ci bardzo! – nanndoj

+0

Nie ma problemu! – HarryH

4

Dodać funkcję łącza Zamiast:

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

chciałby zadzwonić do kontrolera wewnętrznego, a nie do funkcji łącza? –

+0

To ostrzeżenie! Dzięki, ale muszę zadzwonić do kontrolera! – nanndoj

Powiązane problemy