2015-03-04 6 views
6

Я хочу, чтобы получить значение прямо из директивы атрибута:Угловое значение директивы атрибут

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

В моих JS я попробовал:

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

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

Я хочу предупредить "People as p" строку, но я получаю undefined. Это правильный путь или я должен пойти по другому подходу?

+1

вам нужно use '$ timeout (function() {alert ($ scope [" cronos-dataset "]);})' internal controller –

+0

Можете ли вы создать ящик plnkr/скрипки? Ваш код должен работать нормально. http://plnkr.co/edit/2gdUSFoWXUTJAONqGLqn?p=preview –

ответ

7

Вы должны иметь верблюжьего в области видимости декларации

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

Вот демо, чтобы увидеть различные варианты http://plnkr.co/edit/G6BiGgs4pzNqLW2sSMt7?p=preview

+0

Хорошо. Благодарю. –

+0

Вау! Это сделал трюк! Большое спасибо! – nanndoj

+0

Нет проблем! – HarryH

4

Сделать функцию ссылки вместо:

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

Он хотел вызвать внутренний контроллер не в функции связи? –

+0

Это предупреждение! Спасибо, но мне нужно вызвать его внутри контроллера! – nanndoj