У меня возникают проблемы с передачей аргумента из директивы контроллеру. Аргумент "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>
Если вы объявляете область видимости следующим образом:
scope:{
compoundID:'='
},
Вы просто говорите о том, что compoundID
атрибут следует рассматривать как модель, которая будет автоматически анализироваться Угловым. Вы должны использовать модель напрямую, поэтому вместо:
<compound compoundID="{{controll.compoundID}}">
записывать:
<compound compoundID="controll.compoundID">
Если вы хотите написать <compound compoundID="{{controll.compoundID}}">
, ваша область должна быть объявлена следующим образом:
scope:{
compoundID:'@'
},
Также aSampleAttribute
что Angular перевел aSampleAttribute
("случай верблюда") в ваше определение директивы к a-sample-attribute
(em... "kebab case"?), Который будет использоваться в html. Поэтому я думаю, что если у вас есть compoundID
в директиве, вам, возможно, придется написать <compound compound-id="………">
.
Я знаю, что это противно, поэтому я предлагаю вам использовать как н compoundId
=> compound-id
вместо.