2016-07-19 14 views
0

ich einen Router zugreifen:

.config(['$routeProvider',function($routeProvider) { 
    $routeProvider 
     .when('/allbooks', { 
     templateUrl: 'find/showAllMy.html', 
     controller: 'controlador' 
     }).when('/mybooks', { 
     templateUrl: 'find/showAllMy.html', 
     controller: 'controlador' 
     }) 
     .when('/',{ 
     templateUrl: 'find/inputbook.html', 
     controller:'controlador' 
     })   
}]); 

Eine Ansicht Datei "showAllMy.html":

<div id='containerMyBooks' ng-init='MyRequests=0; RequestsForMe=0; '> 

    <center><h3>{{titleMyAll}}</h3></center> 

    <div id='containerbuttonsrequest'> 
     <button class='waves-effect waves-light btn'>Your Trade Request {{MyRequests}}  </button> 
     <button class='waves-effect waves-light btn'>Trade Request for you {{RequestsForMe}}</button> 
    </div> 

    <ul ng-repeat='b in Books' ng-init='tradeLink[$index]=true'> 

     <li class='styleLi'> 
      <a class='stylelinktrade' ng-show='tradeLink[$index]' href='/#/{{titleMyAll}}' ng-click="trade('yes',$index)"><img class="styleimgtrade" src='../images/trade.png'>trade!</a> 
      <a class='stylelinktrade' ng-hide='tradeLink[$index]' href='/#/{{titleMyAll}}' ng-click="trade('no',$index)"><img class="styleimgtrade" src='../images/trade.png'>Cancel trade</a> 
      <img class='styleimgbook' src={{b.img}}> 
     </li> 

    </ul> 

</div> 

Und diese Logik in meinem Controller:

$scope.trade = function(yesNo, index) {  
    if (yesNo === 'yes') { 
    $scope.MyRequests = $scope.MyRequests + 1; 
    } else { 
    $scope.MyRequests = $scope.MyRequests - 1; 
    } 
    console.log('log' + $scope.tradeLink[index]); 
    // $scope.tradeLink[0]=!$scope.tradeLink[0]; 
} 

Aber ich kann nicht aus der Sicht und stattdessen ist immer eine Fehlermeldung, „kann nicht lesen richtig erhalten Zugriff auf $ scope.tradeLink [index] scheine ty 1 von undefiniert. "

Wie kann ich das beheben?

+0

Wo ist das Array $ scope.tradeLink definiert? Können Sie ein Beispiel für den Inhalt hinzufügen? – jbrown

Antwort

0

Das liegt daran, dass Sie nie tradeLink zu einem Array initialisiert haben. Hinzufügen tradeLink = [] in Ihrem oberen ng-init sollte Ihren Fehler beheben.

Aber die sagte, bitte refrain from using ng-init:

Diese Direktive kann unnötige Mengen an Logik in Ihre Vorlagen hinzufügen missbraucht werden. Es gibt nur wenige geeignete Verwendungen von ngInit, wie zum Beispiel für das Aliasing spezieller Eigenschaften von ngRepeat, wie in der folgenden Demo gezeigt; und zum Injizieren von Daten über serverseitiges Scripting. Neben diesen wenigen Fällen sollten Sie controllers anstelle von ngInit verwenden, um Werte für einen Bereich zu initialisieren.

Stattdessen entfernen Sie alle Ihre ng-init Nutzungen (neben dem mit ng-repeat, die relevant sein könnten) und fügen Sie diese in Ihrem Controller:

$scope.MyRequests = 0; 
$scope.RequestsForMe = 0; 
$scope.tradeLink = []; 
+0

Trank du so viel Bruder! dass es und für die schnelle Antwort – jocarosa

+0

und danke für den Hinweis! Ich werde es in Zukunft berücksichtigen – jocarosa