2016-06-04 8 views
0

ich html haben, die unten wie man sieht, ich habe 2x in beiden Situation in ganzen Code ng Klick I gleiche Funktion aufrufen. Beide Funktionen sind in demselben Controller.ng Sie innerhalb ng-repeat nicht funktioniert

  <div class="tagselect tagselect--frameless"> 
      <div class="combobox__body combobox__body--open combobox__body--frameless" ng-show="focus"> 
       <ul class="list-unstyled"> 
        <li class="combobox__item" ng-repeat="pos in listCtrl.positions | filter:query as results" 
         ng-click="listCtrl.choosePosition(pos)">{{pos.name}} 
        </li> 
       </ul> 
      </div> 
      </div> 
      <div class="col-md-2 no-padding"> 
      <button type="button" class="btn btn-success" ng-click="listCtrl.chosenPositions(789456)">Add</button> 
      </div> 

Controller wie folgt aussehen:

myApp.controller('ListCtrl', ['$scope', '$cookies', '$http', function ($scope, $cookies, $http) { 

    var listCtrl = { 
     candidates: [], 
     positions: [], 
     chosenPositions: [], 

     init: function() { 
      listCtrl.getCandidates(); 
      listCtrl.getPositions(); 
     }, 
     getCandidates: function() { 
      $http.get('candidates.json').then(function (res) { 
       listCtrl.candidates = res.data; 
      }); 
     }, 
     getPositions: function() { 
      $http.get('positions.json').then(function (res) { 
       listCtrl.positions = res.data; 
      }); 
     }, 
     choosePosition: function (position) { 
      console.log(position); 
     } 

    }; 

    listCtrl.init(); 
    $scope.listCtrl = listCtrl; 
}]); 

I-Check für missspells verdoppeln und sicherstellen, es ist nicht wegen der Funktion (ich einen neuen erstellen mit einfachem Konsolenprotokoll).

Problem ist, dass Schaltfläche klicken korrekt aufrufen Funktion aber ng-repeat <li ng-click=""> tut nichts tun. Ich lese angulare Dokumentation ein, dass ng-repeat einen neuen Bereich erstellt, aber dieser sollte immer noch okey sein, sobald ich Referenz auf Objekt listCtrlchoosePosition()

kann Kann mir jemand sagen, was ich falsch mache? Dank

EDIT: Plunker Beispiel: http://plnkr.co/edit/ooUQA2n1Vyj8RZtsQ1Pj?p=preview

+0

es wie die pos durch ng Wiederholung ist ein Objekt, aber der Anruf zurück scheint das funktioniert: listCtrl.chosenPositions (789456) empfängt ein primitiv, also denke ich, dass Sie tun sollten ng-click = "listCtrl.choosePosition (pos.someProperty) im ng-repeat –

+0

Hallo @ ArturoMontaño Sie recht sein, wenn diese Funktion aber alles tun wird, wie es jetzt ist es es nur console.log Wert bekommen (Ich kann nicht wissen, Das tut mir leid. Auch Problem ist, dass, wenn ich Haltepunkt in der Funktion verwenden Sie es sogar innerhalb der Funktion – Andurit

+0

http://chat.stackoverflow.com/rooms/113821/ng-click-inside-ng-repeat-doesnt-work erhalten didnt – slackmart

Antwort

2

ng-blur tut etwas seltsam, so werde ich vorschlagen, dass Sie den $scope.focus Wert aus dem ListCtrl zu ändern, anstatt die ng-blur zu verwenden.

html-Datei

<!-- more html code --> 
<!-- input without ng-blur directive --> 
<input class="tagselect__input" placeholder="Position" ng-focus="focus=true" ng-model="query"> 
<!-- more html code --> 
<li class="combobox__item" ng-repeat="pos in listCtrl.positions | filter:query as results" ng-click="listCtrl.choosePosition(pos)">{{pos.name}} 
<!-- more html code --> 

js Datei

// more code goes here. 
choosePosition: function (position) { 
    //alert('Going to choosen position'); 
    //$scope.query = position.name; 
    $scope.focus = false; // Hide div options from here. 
    // rest of your code. 
}, 
// more code goes here. 

Arbeiten in diesem plunkr

Verwandte Themen