2016-10-28 2 views
0

Ich versuche, einen Kalender zu machen, wo ich die Informationen in einer Anfrage in AngularJS erhalten werde. Was ich möchte einen Kalender erstellen, wo Sie geben Sie Ihre Veranstaltungen zu registrieren. Mit dem Datum des json-Attributs wird dieses Ereignis eingegeben und ein Symbol an diesem Tag registriert.wiederholt Array in JSON/AngularJs

Mein Fehler ist, wie Sie auf dem Bild sehen können, wird es ein Array holen und alle Felder und nicht nur an dem Tag einfügen, der zu json registriert wurde. Mein Job wird 42 Mal wiederholt, was die Anzahl der Quadrate im Kalender ist. Weiß jemand, wo ist der Fehler in meinem Ansatz ist, dass ich nicht verstehe.

Bild

enter image description here

Controller

$scope.setDayContent = function(date) { 

    return $http ({ 
     method : "GET", 
     url : "app/components/home/controller/test_calendar.json" 
     }).then(function mySucces(response) { 
      return response.data.data[0].title; 
     }, function myError(response) { 
      $scope.valor = response.statusText; 
     }); 

}; 

json

{"data":[ 
    {"title":"John", 
    "start":"2016-10-22" 
    }, { 
    "title":"Richard", 
    "start":"2016-10-25" 
    } 
]} 

html

<calendar-md flex layout layout-fill 
    calendar-direction="direction" 
    on-prev-month="prevMonth" 
    on-next-month="nextMonth" 
    on-day-click="dayClick" 
    ng-model='selectedDate' 
    week-starts-on="firstDayOfWeek" 
    tooltips="tooltips" 
    day-format="dayFormat" 
    day-content="setDayContent" 
    ></calendar-md> 
+0

Können Sie mir bitte sagen, was ist die Ausgabe der response.data.data? –

+0

Rückgabe response.data.data [0] .title; = John return response.data.data = ich sehe die 2 arrays –

Antwort

1

Ihre Funktion setDateContent läuft für jedes Datum im Kalender. In Ihrem success Callback müssen Sie Logik hinzufügen, um die Daten zu überprüfen, die zurückgegeben wurden, und eine Variable festlegen oder die Information zurückgeben, die für diesen Tag benötigt wird.

Sie sollten den JSON nicht für jeden Tag laden. Sie sollten den JSON laden und dann für jedes Datum in der Funktion überprüfen.

$scope.loadData = function(){ 
     return $http ({ 
     method : "GET", 
     url : "app/components/home/controller/test_calendar.json" 
     }).then(function mySucces(response) { 
      $scope.jsonData = response.data; 
     }, function myError(response) { 
      $scope.valor = response.statusText; 
     }); 
    } 

$scope.setDayContent = function(date) { 

    //check if $scope.jsonData contains date parameter 
    // return title 

}; 
+0

wenn ich die $ scope.jsonData in meinem setDayContent aufrufen habe ich einen Fehler "ReferenceError: jsonData ist nicht definiert". Warum? Wegen verschiedener Funktionen? –

+0

Sie müssen die Funktion '$ scope.loadData' in einem Init aufrufen oder wenn der Controller geladen wird. –

+0

der Ausdruck $ watch nicht mein Problem lösen? Ich versuche immer noch, es herauszufinden –

Verwandte Themen