2016-10-28 13 views
0

私はAngularJSのリクエストに基づいて情報を取得するカレンダーを作ろうとしています。あなたのイベントを登録するためのカレンダーを作成したいのですが。 json属性の日付でこのイベントに参加し、その日のアイコンを登録します。はjson/angularjsで配列を繰り返す

私のエラーは、画像に見られるように、配列を取得し、jsonに登録された日だけでなく、すべてのフィールドを挿入するというエラーです。私の仕事はカレンダーの四角の数である42回繰り返されます。 誰かが私のアプローチのどこにエラーがあるのか​​分かりません。

イメージ

enter image description here

コントローラ

$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

あなたはresponse.data.dataの出力を教えてください。 –

+0

return response.data.data [0] .title; = John return response.data.data = 2つの配列 –

答えて

1

あなたの関数setDateContentは、カレンダーの各日付に対して実行されます。 successコールバックでは、返されたデータをチェックして変数を設定したり、その日に必要な情報を返すロジックを追加する必要があります。

JSONを毎日読み込んではいけません。あなたはJSONをロードしてから、関数の各日付をチェックしてください。

$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

を参照してください。私のsetDayContentで$ scope.jsonDataを呼び出すと、 "ReferenceError:jsonData is not defined"エラーが1つあります。どうして?異なる機能のために? –

+0

initで、またはコントローラのロード時に '$ scope.loadData'関数を呼び出す必要があります。 –

+0

式$ watchは私の問題を解決しませんか?私はまだそれを解決しようとしている –