i have directive in form of dropdown, pretty simple. user can click button add many need in ul
, make selections, , save off. inside of several ng-repeat
s.
i'm having trouble mastering scope. expected, works:
<div ng-repeat="group in groups" question-group="group" class="question-group"> <div ng-repeat="question in questions"> <ul> <li ng-repeat="case in question.cases"></li> <li><new-case group='group'></new-case></li> </ul> </div> </div>
when "works", mean group
scoped (the data of entire group
necessary resulting input).
when switch "click add":
<div ng-repeat="group in groups" question-group="group" class="question-group"> <div ng-repeat="question in questions"> <ul> <li ng-repeat="case in question.cases"></li> <li><a href="#" ng-click="createnewcase($event)">add case</a></li> </ul> </div> </div>
group
undefined
in scope. here createnewcase
function:
function createnewcase($event) { var thisli = angular.element($event.target).closest('li'); var listitem = $compile('<li><new-case group=\'group\'></new-case></li>'); var html = listitem($scope); thisli.before(html); } $scope.createnewcase = createnewcase;
and newcase
directive:
angular.module('groups.directives.newcasedirective', []) .directive('newcase', ['$window', function() { return { restrict: 'ea', scope: { group: '=' }, templateurl: 'groups/views/newcase.tpl.html' }; }]);
i've been reading days , i've tried few other derivatives i'm not getting it. appreciated.
thanks!
the issue group
created ng-repeat
, available in child scopes of ng-repeat
.
each repeated element in it's own child scope. directive version works other 1 doesn't because controller doesn't see child scopes.
you have pass group
argument of function if want access in controller
<a href="#" ng-click="createnewcase($event, group)">
Comments
Post a Comment