コンテンツ AppointmentController をフィルタリングし、event.startのみを返す目的で、ニーズ API を使用して AppointmentController にアクセスする CalendarController があります。しかし、私はfilter()とforEach()を試しましたが、 event.startで利用可能なすべてのタイミングだけでなく、常にすべての異なるプロパティを返します。map()を使用すると、コンソールで必要に応じてevent.start値のみをマップに返しますが、ハンドルバーは何も表示しません。
u = App.__container__.lookup("controller:appointments");
y = u.get('content');
y.map(function(appointee) { return appointee.get('event.start') });
戻り値:
[Thu Jul 18 2013 01:00:00 GMT+0100 (GMT Daylight Time), Thu Jul 25 2013 01:00:00 GMT+0100 (GMT Daylight Time), Thu Jul 25 2013 01:00:00 GMT+0100 (GMT Daylight Time)]
map()とカレンダー テンプレートを使用する場合のjsfidleには何も表示されません。このjsfiddle USES FILTER ()とカレンダー テンプレートはコンテンツを表示しますが、event.start だけでなく、すべてのコンテンツを返し、何もフィルタリングしません。
App.AppointmentsController = Ember.ArrayController.extend({ });
filter()を使用したCalendarscontroller todayEventプロパティ:
App.CalendarController = Em.ObjectController.extend({
needs: ['appointments'],
todayEvent: function(){
var _self = this;
var appoint = _self.get('controllers.appointments');
var appCont = appoint.get('content');
return appCont.filter(function(appointee) {
return appointee.get('event.start');
});
}.property()
});
注記 {{name}} プロパティを追加して、todayEvent プロパティによって返されるものがevent.startによるフィルタリングではなく、'event.start' のみを返すのではなく、すべてのプロパティを返すことを示しました。
<script type="text/x-handlebars" data-template-name='calendar'>
<h1> from todayEvent</h1>
{{#each todayEvent}}
{{name}}<br/>
{{event.start}}<br/>
{{/each}}
ルーター
App.Router.map(function() {
this.route('events');
this.resource('appointments');
this.route('calendar', {path: '/cal'});
});
ember-モデルが使用されています: :
App.Appointment = Ember.Model.extend({
name: Ember.attr(),
event : Ember.belongsTo('App.Event', {key: 'event_id'})
});
App.Event = Ember.Model.extend( {
title: Ember.attr(),
start: Ember.attr(Date),
end: Ember.attr(Date),
allDay: Ember.attr(Boolean),
appointments: Ember.hasMany('App.Appointment', {key: 'appointment_ids'})
});