<google-signin>
と<google-signin-aware>
のPolymerでGoogle APIを使用すると、カレンダーデータを取得してコンソールに記録できますが、別のPolymer関数(コールバックの外側)が機能しません。コールバック内でPolymer関数を呼び出すと 'TypeError .. is not a function'が返されます
: https://stackoverflow.com/a/24716257/5779929機能に直接.bind(this)
を使用してこれを渡す:
handleResponse: function (response) {
console.log('got response: ', response);
this.calendar = response;
},
listUpcomingEvents: function() {
var queryBody = { 'showDeleted': false };
var request = gapi.client.calendar.events.list(queryBody);
request.execute(function (resp) {
console.log(resp);
this.handleResponse(resp);
}.bind(this));
},
上記のスニペットでthis.handleResponse
への呼び出しが与える:
"Uncaught TypeError: this.handleResponse is not a function"
私はこのようにそれを書くことを試みた:ここに示されているよう request.execute(this.handleResponse.bind(this));
:Getting access to a Polymer method inside a function、 であるが、それは次のようになる:
"Uncaught TypeError: Cannot read property 'bind' of undefined"
方法、またはから 'listUpcomingEvents'が呼び出されていますか? –
"listUpcomingEvents"関数をそのホストオブジェクトにバインドします。 'var someObj = {listUpcomingEvents:function(){}}; someObj.listUpcomingEvents = someObj.listUpcomingEvents.bind(someObj); ' –
@GünterZöchbauerこれは、以下に示すように、Googleのサインインを意識した成功イベントによって引き起こされます:https://elements.polymer-project.org/elements/google-signin?active = google-signin-aware、いくつかのパラメータを指定するとgoogle-api:gapi.client.load( 'calendar'、 'v3'、this.listUpcomingEvents)を使用できます。 私が言うことができる限り動作します –