2017-06-14 9 views
0

Ich habe eine Schaltfläche in meiner Ansicht, die vollständig in der Ansicht behandelt wird, da es nur ein einfacher Schalter zum Umschalten der Ansicht eines Elements mit ng-Show-Anweisung ist. Ich möchte in der Lage sein, die Ansicht von innerhalb der Direktive selbst umzuschalten.

Hier ist ein Beispiel-Code, was zu tun versuche:

<div> 
<button ng-click="ToChange=true"> 
<my-directive ng-show="ToChange"></my-directive> 
</div> 

    .directive('myDirective', function() { 
    return { 
    ... 
    controller: function ($scope) { 
     $scope.whenClickedThis = $scope.ToChange=false ??? 
    }, 
    ... 
    }; 
}); 

Antwort

2

In Ihrer Winkel Richtlinie können Sie entweder Zugriff geordneten Bereich haben oder Umfang isolieren. Wenn Sie planen, übergeordneten Bereich zu verwenden, dann

angular.module('app') 
.controller('mainController', function($scope){ 
    $scope.ToChange = false; 
}) 
.directive('myDirective', function(){ 
    return { 
     restrict: 'E', 
     controller: function($scope){ 
      //You can access $scope.ToChange here 
     }), 
     link : function($scope, $element, $attribute){ 
      //You can access $scope.ToChange here 
     } 
    } 
}); 

<div ng-controller="mainController"> 
    <button ng-click="ToChange=true"> 
    <my-directive ng-show="ToChange"></my-directive> 
</div> 

Wenn Sie ein Isolat Rahmen für Ihre Richtlinie zu schaffen, planen,

angular.module('app') 
.controller('mainController', function($scope){ 
    $scope.ToChange = false; 
}) 
.directive('myDirective', function(){ 
    return { 
     restrict: 'E', 
     scope : { 
      change : '=' 
     }, 
     controller: function($scope){ 
      //Now you can access $scope.change from here 
     }), 
     link : function($scope, $element, $attribute){ 
      //Now you can access $scope.change from here 
     } 
    } 
}); 

<div ng-controller="mainController"> 
    <button ng-click="ToChange=true"> 
    <my-directive change="ToChange"></my-directive> 
</div> 

Sie können eine Uhr in yo erstellen ur-Richtlinie, wenn Sie wollen Ihre Variable

$scope.$watch('change', function(oldValue, newValue) { 
    //Do something here; 
}); 

Lesen Sie mehr über Winkel Umfang here

0
var app = angular.module("test",[]); 

app.directive("myDirective",function(){ 

    return { 

     restrict: "EA", 

     scope: true, 

     link: function(scope,elem,attr){ 

      // code goes here ... 
     } 

    } 

}); 
+0

Während Code nur Antworten das Problem lösen können, aber es ist immer ratsam, eine Erklärung des Codes –

+0

Dank für die Beratung zur Verfügung zu stellen, wird es beim nächsten Mal berücksichtigen. Was ist, wenn ich das bereits im Umfang habe? scope: { ngLead: '=', ngShowLead: '=', }, –

+0

Diese Antwort fehlt in der Erklärung, ich sehe kaum, wie man verstehen kann, wie dies das Problem löst, besonders jemand neu zu Richtlinie, bitte erarbeiten Sie –

0

Sie können direkt in der Richtlinie übergeordneten Bereich Variable zugreifen Änderungen identifizieren.

angular.module('your-module').directive('myDirective', function() { 
    return { 
    controller: function ($scope) { 
     $scope.ToChange = !$scope.ToChange; 
    } 
    }; 
}); 
Verwandte Themen