• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

angular.js wer kennt sich aus ?

boogy

Neues Mitglied
Hallo,

ich beschäftige mich mit javascript ganz neu mein Problem ist das ich einen " Duplicate Error" bekomme und ich nicht weiß wie ich das beheben soll.
Ich mach gerade gerade einen Tutorial durch, das hat alles super geklappt bis auf das Angular.js nach dem neuesten Update ng-repeat Duplicate nicht mehr erlaubt.

Mein problem ist : ng-repeat="message in messages">

mein controller js schaut so aus:

Code:
angular.module('starter.controllers', [])
.controller('DashCtrl', function($scope, $http) {
function makeHttpRequest() {
 
    try {return new XMLHttpRequest();}
    catch (error) {}
 
    try {return new ActiveXObject("Msxml2.XMLHTTP");}
    catch (error) {}
     
    try {return new ActiveXObject("Microsoft.XMLHTTP");}
    catch (error) {}
     
    throw new Error ("Leider konnte der HTTP request nicht erstellt werden.");
 
}
 
var appID = "[b]meine Nr.[/b]";
var appSecret = "[b]meine secret Nr.[/b]";
var accessTokenRq = makeHttpRequest();
var httpString = 'https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id='+appID+'&client_secret='+appSecret;
accessTokenRq.open("GET",httpString,true);
accessTokenRq.send(null);
var access_token;
accessTokenRq.onreadystatechange = function() {
if (accessTokenRq.readyState == 4){
access_token = accessTokenRq.responseText;
//alert ("Hat geklappt :)");
var request = makeHttpRequest();
request.open("GET","https://graph.facebook.com/v2.2/[b]fb seiten nr[/b]./posts?"+access_token,true);
request.send(null);
request.onreadystatechange = function() {
 
    if (request.readyState == 4) {
        var response = request.responseText;
        console.log(response);
var fbData = angular.fromJson(response);
var data = fbData.data;
var objects = [];
for (var i = 0; i < data.length; i++) {
    var entry = data[i];
    var message = entry.message;
    objects.push(message);
}
  $scope.messages = objects; 
      }
     }
   } 
}
 
    })
.controller('ChatsCtrl', function($scope, Chats) {
  $scope.chats = Chats.all();
  $scope.remove = function(chat) {
    Chats.remove(chat);
  }
})
.controller('ChatDetailCtrl', function($scope, $stateParams, Chats) {
  $scope.chat = Chats.get($stateParams.chatId);
})
.controller('AccountCtrl', function($scope) {
  $scope.settings = {
    enableFriends: true
  };
});





Hier meine HtmL Datei:

HTML:
    <ion-view view-title="Facebook Feed">
      <ion-content class="padding">
      <div class="list">
        <a class="item item-thumbnail-left" ng-repeat="message in messages">
          <img src="img/logo.jpg">
          <h2>facebook feeds</h2>
           <p>{{messages}}</p>
        </a>
    </div>
      </ion-content>
    </ion-view>


Mein Problem ist wenn ich das so lasse bekomme ich ng-repeat duplicate Error

Aber wenn ich das dann so mache :
ng-repeat="message in messages track by $index"

Die Feeds werden zwar angezeigt aber es wird ein ein Post unendlich mal wiederholt und nebeneinander.
Auf dem Youtube Video ist das ganz anders zu sehen.

Im Anhang ist ein Screenshot wie es bei mir aussieht, dann wisst Ihr genau was ich meine.

Kann mir bitte jemand helfen wie ich das Problem lösen kann?
Wenn das update nicht wäre, dann hätte ich das problem jetzt nicht
sad.png


Die Leute die das gelöst haben sind im englischsprachigen raum und haben ein ganz anderen code.

Da ich eine feed api habe und ich mich nicht auskenne würde ich mich freuen wenn sich jemand mit soetwas auskennt.

Ich wäre Euch allen sehr dankbar

MfG
 

Anhänge

Zuletzt bearbeitet:
Angular bringt mit jedem neuen Release Veränderungen. Nimm für einen Einstieg die aktuelle Version 1.4 und leicht verständliche Tutorials, sonst wirst du Schiffbruch erleiden. Bereits die Art und Weise, wie das Video-Tutorial HTTP Requests ausführt, ist antiquiert.

Einen Fehler sehe ich zumindest hier:
Code:
<a class="item item-thumbnail-left" ng-repeat="message in messages">

          <img src="img/logo.jpg">
          <h2>facebook feeds</h2>
           <p>{{messages}}</p>
        </a>

messages dürfte eine Kollektion von Objekten mit keys und values sein. Welche das sind, zeigt dir ein console.debug(messages) im Controller. Die Ausgabe innerhalb des ng-repeat darf dann nicht {{messages}} sondern muss {{message}} zzgl. des entsprechenden Keys lauten.
 
@Tronjer: danke das du dir die Mühe gemacht hast einen Blick zu werfen.
Menschen die helfen sind selten geworden heutzutage deswegen eIn großes Dankeschön.


omg und ich schreibe messages, das passiert mir jetzt des öfteren das ich beim abschreiben einen tippfehler habe und ich dann stundenlang suchen muss.

Es hat geklappt ! Die feeds zeigen so wie es sein sollte.

Aber wie wähle ich eine version ?

ich gehe zum cmd und tippe das z.B ein :
$ npm install -g cordova ionic
 
Das $ stellt nur den Prompt dar und sollte nicht eingegeben werden.

NPM ist ein packet manager. Mit npm -g paketname installierst du ein Paket global - in der Regel ist dafür noch ein vorangestelltes sudo erforderlich. Willst du die Version eines installierten Paketes nachträglich ändern, kannst du das in der package.json im Abschnitt dependencies anpassen und hinterher ein npm update durchführen.
 
Zurück
Oben