0

という変数を作成するスクリプトがありますeventData1。イベントセクションで、eventsが作成されます。このジョブをhtmlファイルに静的に含めるのではなく、動的に実行したいと思います。

    var eventData1 = {
          options: {
            timeslotsPerHour: 4,
            timeslotHeight: 20,
            defaultFreeBusy: {free: true}
          },
          events : 
            {'id':1, 'start': new Date(year, month, day, 12), 'end': new Date(year, month, day, 13, 30), 'title': 'Lunch with Mike', userId: 0},
            {'id':2, 'start': new Date(year, month, day, 14), 'end': new Date(year, month, day, 14, 45), 'title': 'Dev Meeting', userId: 1},
            {'id':3, 'start': new Date(year, month, day+1, 18), 'end': new Date(year, month, day+1, 18, 45), 'title': 'Hair cut', userId: 1},
            {'id':4, 'start': new Date(year, month, day+2, 8), 'end': new Date(year, month, day+2, 9, 30), 'title': 'Team breakfast', userId: 0},
            {'id':5, 'start': new Date(year, month, day+1, 14), 'end': new Date(year, month, day+1, 15), 'title': 'Product showcase', userId: 1}
          ]
    };

したがって、私のファイルは、と呼ばれる別の変数を作成します。これappointmentsは、上記のように設定されています。

[{'id': 25, 'start': new Date( '2013-01-07 14:45:00'), 'end': new Date('2013-01-07 15:45:00'), 'title': 'test appointment from javascript', userId: 0},{'id': 26, 'start': new Date( '2013-01-10 11:15:00'), 'end': new Date('2013-01-10 12:15:00'), 'title': 'test appointment from javascript', userId: 0}]

appointments静的に作成されたイベントを変数に置き換えるにはどうすればよいですか?

私はこれを試しましたが、うまくいきませんでした:

    var eventData1 = {
          options: {
            timeslotsPerHour: 4,
            timeslotHeight: 20,
            defaultFreeBusy: {free: true}
          },
          events : appointments
    };

編集:マットは正しかった、予定変数は範囲内にあるが、まだ設定されていない:

  var appointments = "[";
  var counter = 0;
   $.getJSON('link', function(data) {
        console.log('entered getJSON()');
        console.log(data);
        $.each(data, function(i, appointment) {
            var id = appointment.appointmentId;
            var start = appointment.start;
            var end = appointment.end;
            var title = appointment.prename;
            var userid = appointment.workerid;

            appointments += "{'id': " + id + ", 'start': new Date( '" + start+ "'), 'end': new Date('" + end + "'), 'title': 'test appointment from javascript', userId: 0}";

            if (i === (data.length - 1)) {
                // this is the last                    
            } else {
                appointments += ",";
            }             
            counter++;
        });

        appointments += "]";

    console.log(appointments);
    });

他のコードが使用する前にセットアップするために私ができることはありますか?

4

1 に答える 1

0

コードのどの部分がファイルのどこにあるかについて少し混乱していますが、サーバーにリクエストを送信し、eventData1サーバーの応答を設定して処理すると思います。

Javascript文字列は不変であるため、変更しappointments eventData1.eventsても更新されません。この例を見てください:

var str = "hi";
var obj = {myString: str}; // obj.myString = "hi"
str = "hello"; // obj.myString is still "hi"

「hi」文字列は不変であるため更新されず、新しい文字列で上書きされます。

したがって、実行できることの1つはeventData.events、明示的に更新して、の新しい値を割り当てるappointmentsことです。

しかしappointments、Javascript配列の文字列表現なので、代わりに配列を使用してみませんか?だから代わりに

appointments += "{'id': " + id + ", 'start': new Date( '" + start+ "'), 'end': new Date('" + end + "'), 'title': 'test appointment from javascript', userId: 0}";

使用する

appointments = []; // Do this outside of the $.each
... 
appointments.push(appointments += "{'id': " + id + ", 'start': new Date( '" + start+ "'), 'end': new Date('" + end + "'), 'title': 'test appointment from javascript', userId: 0}");
于 2013-01-07T19:01:56.853 に答える