Ich muss ein Attribut aus einer Direktive beobachten und eine Funktion umschalten, wenn der Wert wahr ist, dies funktioniert beim ersten Klick, aber ich muss dann das zurücksetzen Wert des ATTRIBUTE/Attribut-Modells, sobald es ausgewertet wurde, und das ist der Teil, den ich nicht herausfinden kann.Wie kann ich die Direktive umschalten, ohne die Scope-Deklaration zu verwenden?
DEMO AUSGABETAG: https://jsfiddle.net/DG24c/200/
Das gewünschte Ergebnis die EXTERNAL ACCESS
Taste in meiner Demo immer löst die Warnmethode zu haben wäre.
Vorlage:
<div ng-controller="otherController">
<button interactive show-when="toggled">Show Directive Alert</button>
<button ng-click="toggled = true" >External access</button>
</div>
Javascript:
myApp.controller("otherController",function($scope){
$scope.toggled = false;
});
myApp.directive('interactive', function($parse) {
return {
restrict : 'A',
// scope : true || {} cannot be used
link : function(scope, element,attrs) {
element.on('click', function() {
show();
});
scope.$watch(attrs.showWhen, function(newValue,o) {
if (newValue) {
// the value is true, but now I need to reset
// the value on TOGGLED back to false here, so that the next
// time the button clicks, it will show the alert
show();
// tried attrs.$set('showWhen', false);
// tried var showAttr = $parse(attrs.showWhen)();
// showAttr = false;
}
});
function show() {
alert('showing!');
}
}
};
})
@jwpfox eigentlich diese mich lösen half, habe ich seine Antwort zu editieren erarbeiten –