2016-08-05 16 views
1

ist Gibt es eine Möglichkeit, DOM-Element auswählen, die Direktive von I Call Select Befehl?AngularJS wählen DOM-Element, das Richtlinie nach Tag

Als Beispiel - ich habe zwei Direktive. Jede von ihnen bekam <input> innerhalb der Direktive view.html.

view1.html

<input></input> 

view2.html

<div>other input<div> 
<input></input> 

Ich habe Controller in den Richtlinien erklärt, die ich Sachen zu handhaben verwenden.

erste (genannt von view1 Richtlinie)

$scope.selectView1Input = function(){ 
    var input = angular.element('input'); 
} 

Sekunde (von view2 Richtlinie genannt)

$scope.selectView2Input = function(){ 
    var input = angular.element('input'); 
} 

Aber in bouth Situationen ist es die Auswahl der gleichen Eingang abgelegt (erwartete ich sein Verhalten, weil es sieht aus wie nur dom selector, so)

Ich möchte nicht id s verwenden. Nur einfache Tags, also, gibt es eine Möglichkeit, dies zu tun?

+1

Warum verwenden Sie kein ng-Modell? –

Antwort

2

Sie können mit jQuery oder Build- in jqLite zur Auswahl zu Element:

app.directive('myDirective', function() { 
    return { 
     restrict: 'A', 
     link: function(scope, element, attr) { 
      var input = element.find('input'); 
      … 
     } 
    }; 
}); 
+0

oh, ich mag es! Ich Aufruf controler Funktion fon Eingabe chnage, und übergeben Sie in Controller-Funktion Link auf Element, das ich mit '.find()' -Funktion gefunden! nett – DanilGholtsman

0

können Sie $event verwenden, während Sie die Funktion von der Direktive aufrufen. Rufen Sie die Funktionen mit $ event als Argument auf.

ng-click="selectView1Input($event)" 

(wenn Sie die Funktion auf klicken).

Ihre Funktionen werden wie folgt aussehen:

erste (von view1 Richtlinie genannt)

$scope.selectView1Input = function(event){ 
    var input = $(event.target); 
} 

Sekunde (von view2 Richtlinie genannt)

$scope.selectView2Input = function(event){ 
    var input = $(event.target); 
} 
+0

ope ich verwende nicht klicken Sie dort – DanilGholtsman

+0

Wie rufen Sie diese Funktion aus dem Formular? –

+0

es ist nur Beispielcode. Tatsächlich habe ich eine Situation, in der eine "Leinwand" in der "ersten Direktivenansicht" und eine andere "Leinwand" in der "zweiten Direktivenansicht" ist. Willst du 2nd Canvas bei der Eingabe bekommen (in '2nd view' ofc) und es mit Text aktualisieren, den ich schreibe – DanilGholtsman