6

からスコープに変数を設定するには、私は他の場所でそれを使用することができるよう$scopeに、変数、selected.childを設定しようとしています。私はまだ角度でスコープに新しいんだけど、私はディレクティブ内からスコープに何かを設定することができない理由がわかりません。私は、スコープの関数を呼び出すことができます。AngularJS - ディレクティブ

私はそれのためにJSfiddleを持っており、コードは以下に掲載されています。事前に助けを

感謝。

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" 
    }; 


}); 

答えて

11

あなただけ

  scope.selected.child = jQuery.parseJSON(attrs.select); //Neither this 
      // scope.setSelected(jQuery.parseJSON(attrs.select)); //Nor this is working 
scope.$apply(); 
以下のようにコードを変更$適用 への呼び出しが欠落しています
関連する問題