2016-04-06 6 views
0

Ich lerne eckig. Ich versuche also, meine erste Direktive zu erstellen, die mit DOM interagiert, aber nicht funktioniert. Bitte sag mir was ich im Code vermisse. Hier ist Code.Meine angular js Direktive funktioniert nicht für append div

<div class="main" ng-app="myApp"> 
<button data-ng-click="submit()" my-directive>click</button> 
</div> 

app.module('myApp', []); 
app.directive('myDirective',function(){ 
    return function(scope, element, attrs){ 
      element.click(function(){ 
       alert('hello'); 
       element.parent().find('.main').append('<div>Some text</div>'); 
      }) 
     } 
}) 

meine js Geige Link https://jsfiddle.net/tridip/2fooy06c/

+1

Ihre JS Fiddle nur Punkt-Verbindung Homepage nicht arbeiten Demo jsfiddle. – GillesC

+0

Entschuldigung, das war ein Fehler. Ich aktualisiere die Link URL. – Thomas

+0

Bitte verwenden Sie keine eckigen wie jQuery. Sie können das Gebäude und die Aktualisierung Dom mit Element usw. vergessen ... – Pterrat

Antwort

0

element.click keine Funktion ist. müssen Sie Ereignis mit .bind

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

myApp.directive('myDirective',function(){ 
    return { 
     link: function(scope, element, attrs){ 
      element.bind('click',function(){ 
       alert('hello'); 
       element.parent().append('<div>Some text</div>'); 
      }) 
      } 
     } 
}) 

DEMO anbringt: http://jsfiddle.net/Lvc0u55v/2018/

+0

Ich lerne eckig. also wie viele Eigenschaft eine Direktive wie Link haben kann: Typ: Vorlage: etc? Teilen Sie einen Link von wo ich volle Idee bekommen kann. danke – Thomas

+0

@Thomas refer ng-book. – Ved

+0

Welches ng-Buch wäre am besten für Anfänger geeignet. Schlag mich vor. – Thomas

1

Sie fehlt den 'link' Eigenschaft:

app.directive('myDirective',function(){ 
    return { 
     link: function(scope, element, attrs){ 
      element.click(function(){ 
       alert('hello'); 
       element.parent().find('.main').append('<div>Some text</div>'); 
      }) 
      } 
     } 
}) 
+0

Ich kopierte Ihren Code, aber nicht funktioniert hier ist jsfiddle https://jsfiddle.net/tridip/2fooy06c/1/ – Thomas

+0

Ich lerne eckig. also wie viele Eigenschaft eine Direktive wie Link haben kann:? – Thomas

+0

Problem ist mit 'element.click'. Es gibt keine solche Funktion. Überprüfen Sie diese https://docs.angularjs.org/api/ng/function/angular.element – S4beR

1

Bitte Code wie unten ändern und es wird funktionieren. Es gibt keine solche Funktion wie click im Element. Bitte überprüfen Sie diese Dokumentation https://docs.angularjs.org/api/ng/function/angular.elementhere

Vergessen Sie auch nicht type und link Attribut in Ihrer Richtlinie aufzunehmen. Type wird verwendet, um anzugeben, welche Art von Direktive erstellt wird. Siehe here für weitere Details

app.directive('myDirective',function(){ 
return { 
    type: "A", 
    link: function(scope, element, attrs) { 

    element.on("click", function() { 
     alert('hello'); 
     element.parent().append('<div>Some text</div>'); 
    }); 

    } 

} 
}); 

beziehen sich auf diese plnkr Beispiel https://plnkr.co/edit/CYyOKzjR1kBR3U0tG3jv?p=preview für mehr Details

+0

ich den Code testen, aber nichts passiert, wenn Sie auf die Schaltfläche klicken. kann jemand mir eine funktionierende version in jfiddle geben? – Thomas

+0

hast du den PLNKR Link versucht, den ich geteilt habe? – S4beR

+0

Ich lerne eckig. also wie viele Eigenschaft eine Direktive wie Link haben kann: Typ: Vorlage: etc? Teilen Sie einen Link von wo ich volle Idee bekommen kann. danke – Thomas

0

Sie müssen Klickfunktion binden. Siehe demo

app.directive('myDirective', function() { 
return { 
    link: function ($scope, element, attrs) { 
     element.bind('click', function() { 
      alert('hello'); 
      element.parent().append('<div>Some text</div>'); 
     }); 
    } 
    }; 
}); 
Verwandte Themen