6

Próbuję ustawić zmienną selected.child na $scope, aby można było użyć jej w innym miejscu. Wciąż jestem nowicjuszem w dziedzinie Angular, ale nie jestem pewien, dlaczego nie mogę ustanowić czegoś na temat zakresu dyrektywy. Potrafię wywoływać funkcje zakresu.AngularJS - Ustawianie zmiennej zakresu od dyrektywy

Mam dla niego JSfiddle, a kod został zamieszczony poniżej.

Dzięki za pomoc z góry.

HTML:

<div ng-controller="DashCtrl"> 
    <h3>{{selected.child}}<h3> 

    <div ng-repeat="child in children" select={{child}}> 
     {{child.username}} 
    </div> 
</div> 

javascript:

var dash = angular.module('dash', []); 

dash.directive('select', function() { 
    return { 
    restrict: "A", 
    scope: false, 
    link: function (scope, element, attrs) { 
     element.bind('click', function() { 
     scope.selected.child = jQuery.parseJSON(attrs.select); //Neither this 
     scope.setSelected(jQuery.parseJSON(attrs.select)); //Nor this is working 

      if (attrs.select != scope.selected) { 
      other_elements = angular.element(document.querySelectorAll('[select]')); 
       for (var i = 0; i < other_elements.length; i++) { 
        elm = jQuery(other_elements[i]); 
        elm.css('background', 'none'); 
       } 
       element.css('background', '#F3E2A9'); 
      } 
     }); 
    } 
    }; 
}); 

dash.controller('DashCtrl', function ($scope) { 
    $scope.setSelected = function (child) { 
    $scope.selected.child = child; 
    }; 

    $scope.children = [{ 
    "age_group": "6-8", 
     "username": "my_child" 
    }, { 
    "age_group": "8-10", 
     "username": "another_child" 
    }]; 

    $scope.selected = { 
    child: "none" 
    }; 


}); 

Odpowiedz

11

Brakuje połączenia do $ zastosować Wystarczy zmodyfikować kod jak poniżej

  scope.selected.child = jQuery.parseJSON(attrs.select); //Neither this 
      // scope.setSelected(jQuery.parseJSON(attrs.select)); //Nor this is working 
scope.$apply(); 
Powiązane problemy