EmberJS Mixin としての jQuery UI の datepicker ウィジェットについてもう 1 つ。beforeShowDay イベントを処理するコールバック関数を提供する場合は、次のエラーが発生します。
Uncaught TypeError: Cannot read property '0' of undefined
jqueryui docで指定されているように、コールバック関数(emberビュー内)が配列を返す場合でも
beforeShowDay: function(date){
some code...
return [true, ''];
};
これは、_gatherEvents 関数の callback.call の後に何も返されないために発生します。
_gatherEvents: function(options) {
var uiEvents = this.get('uiEvents') || [], self = this;
uiEvents.forEach(function(event) {
var callback = self[event];
if (callback) {
// You can register a handler for a jQuery UI event by passing
// it in along with the creation options. Update the options hash
// to include any event callbacks.
options[event] = function(event, ui) { callback.call(self, event, ui); };
}
});
}
これを修正するには、return ステートメントを callback.call の前に追加します。
_gatherEvents: function(options) {
var uiEvents = this.get('uiEvents') || [], self = this;
uiEvents.forEach(function(event) {
var callback = self[event];
if (callback) {
// You can register a handler for a jQuery UI event by passing
// it in along with the creation options. Update the options hash
// to include any event callbacks.
options[event] = function(event, ui) { return callback.call(self, event, ui); };
}
});
}
実例http://jsfiddle.net/thibault/qf3Yu/