проблема при передаче аргумента из директивы в контроллер

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>

Теги:

1 ответ

2

Если вы объявляете область видимости следующим образом:

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 вместо.

  • 0
    «Кебаб кейс» идеален.
  • 0
    К сожалению, объект, который мне дают, до сих пор не имеет аргумента. Вы знаете возможный источник этой ошибки?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню