2015-06-30 4 views
0

У меня возникают проблемы с передачей аргумента из директивы контроллеру. Аргумент «compoundID» продолжает возвращаться не определен. Im использует угловые js. Я планирую иметь более одной из директив на страницу.Проблема с передачей аргумента от директивы к контроллеру

JS:

angular.module('ireg').directive('compound', function() { 
return { 
    restrict:'E', 
    scope:{    
     compoundID:'=' 
    }, 
    templateUrl: '/ireg/components/compound/compound.html' 
}; 
}); 

angular.module('ireg').controller("compoundController",['$scope','$attrs','compoundService', function($scope,$attrs,compoundService){ 
    var vm = this; 
    vm.compoundID = $attrs.compoundID; 
    console.log($attrs); 
}]); 

HTML:

<div class = "compound-view" ng-controller = "compoundViewController as controll" > 
<compound compoundID="{{controll.compoundID}}"></compound>{{controll.compoundID}} 
<div = "studies" ng-repeat="study in controll.studies"> 
    <studie studyID="{{study.ID}}"></studie> 
</div> 
<cro croID= "{{croID}}"></cro> 

ответ

2

Если вы объявляете область действия, как это:

scope:{    
    compoundID:'=' 
}, 

Вы просто говорит о том, что compoundID attribut e следует рассматривать как модель, которая автоматически анализируется Angular. Вы должны использовать эту модель напрямую, поэтому вместо того, чтобы:

<compound compoundID="{{controll.compoundID}}"> 

пишут:

<compound compoundID="controll.compoundID"> 

Если вы хотите написать <compound compoundID="{{controll.compoundID}}">, ваша сфера должна быть объявлена ​​как это вместо:

scope:{    
    compoundID:'@' 
}, 

Также Умение переведено aSampleAttribute ("верблюжьей кейс") в соответствии с определением вашей директивы a-sample-attribute (em ... "kebab case" ??), который будет использоваться в html. Поэтому я думаю, что если у вас есть compoundID в директиве вы май должны написать <compound compound-i-d="………">.

Я знаю, что это противно, поэтому я предлагаю вам использовать sth, как compoundId =>compound-id.

+0

"Kebab case" perfect. –

+0

К сожалению, объект, который мне предоставлен, до сих пор не имеет аргумента. Вы знаете возможный источник этой ошибки? –

+0

Честно говоря, я не уверен, как именно цель контроллера вы поставили в вопросе. Намерены ли вы, чтобы он был директором директивы? Мне было бы лучше, если бы вы представили минимальную демонстрацию настройки того, как эта часть приложения должна быть построена, на http://plnkr.co/ - я смогу ее исправить. –